假设存在“温度”(T)和“距离”(D)的类型。实际上,两者都可以声明为通常的typedef:
typedef int T; // might be C++11 'using'
typedef int D;
但如果我想要一个重载函数:
void f(T) {}
void f(D) {}
它不起作用,因为两种类型都相同。
哪种最现代的C ++ - 实现这种过载的方式?
很明显,对于那些类型必须可以区分编译器。
答案 0 :(得分:7)
BOOST_STRONG_TYPEDEF
完全 。
答案 1 :(得分:6)
如果您希望它们可以区分,我会选择带转换运算符的结构。
struct T {
int value;
operator int() const {
return value;
}
}
一个简单的价值类。
如果你想要一些现代的东西,你可以添加你自己使用的定义文字来直接从文字创建T的实例。
T operator "" _t(unsigned long long int v){ return {v};}