【发布时间】:2015-10-31 22:31:43
【问题描述】:
我正在使用以下在相关单元之间转换的代码来玩弄一些类型安全的想法。 . .
#include <cmath>
#include <limits>
template <typename T>
class Pascal
{
private:
T val;
public:
explicit Pascal(const T val_)
{
val = val_;
}
operator T() const
{
return val;
}
};
template <typename T>
class dbSPL {
private:
T val;
public:
explicit dbSPL(const Pascal<T> p)
{
auto infProtect = std::numeric_limits<T>::min();
val = 20.0 * std::log10( infProtect + p / 20e-6 );
}
operator T() const
{
return val;
}
};
我想知道是否可以从构造函数参数类型推断模板类型,而不是显式声明模板参数。例如auto p = Pascal(0.5) 而不是输入auto p = Pascal<double>(0.5),这将导致更简洁的dbSPL(Pascal(0.5)) 而不是更冗长的dbSPL<double>(Pascal<double>(0.5))。
【问题讨论】:
标签: c++ templates c++11 constructor