αλε*_*λυτ 4 c++ integer overloading c++11
假设存在"温度"(T)和"距离"(D)的类型.实际上,两者都可以声明为通常的typedef:
typedef int T; // might be C++11 'using'
typedef int D;
Run Code Online (Sandbox Code Playgroud)
但是如果我想要一个重载函数:
void f(T) {}
void f(D) {}
Run Code Online (Sandbox Code Playgroud)
它不起作用,因为两种类型都是相同的.
哪种最现代的C++ - 实现这种过载的方式?
很明显,对于那些类型必须可以区分编译器.
如果你想让它们可以区分,我会选择一个带转换运算符的结构.
struct T {
int value;
operator int() const {
return value;
}
}
Run Code Online (Sandbox Code Playgroud)
一个简单的价值类.
如果你想要一些现代的东西,你可以添加你自己使用的定义文字来直接从文字创建T的实例.
T operator "" _t(unsigned long long int v){ return {v};}
Run Code Online (Sandbox Code Playgroud)