lea*_*vst 1 c++ templates constructor c++11
我正在使用以下代码来处理某些类型的安全提示,该代码在相关单元之间进行转换...
#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;
}
};
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以从构造函数参数类型推断模板类型,而不是显式声明模板参数.例如auto p = Pascal(0.5),而不是打字auto p = Pascal<double>(0.5),那么这将导致更整洁dbSPL(Pascal(0.5))越过越详细dbSPL<double>(Pascal<double>(0.5)).
使用辅助函数代替:
template <typename T>
dbSPL<T> make_dbspl(T t)
{
return dbSPL<T>(Pascal<T>(t));
}
int main()
{
auto dbspl = make_dbspl(0.5);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
119 次 |
| 最近记录: |