"integral"类型的函数重载

Function overloading for "integral" types

本文关键字:重载 函数 类型 integral      更新时间:2023-10-16

假设存在"温度"(T)和"距离"(D)类型。实际上,这两种类型都可以声明为通常的类型:

typedef int T; // might be C++11 'using' 
typedef int D;

但是如果我想要一个重载函数:

void f(T) {}  
void f(D) {}

将不起作用,因为两种类型是相同的。

实现这种重载的最现代的c++方法是什么?

很明显,对于编译器来说,这些类型必须是可区分的。

BOOST_STRONG_TYPEDEF正是为了这个目的而

如果您希望它们是可区分的,我会选择带有转换操作符的结构体。

struct T {
   int value;
   operator int() const {
       return value;
   }
}

简单的值类。

如果你想要一些现代的东西,你可以添加你自己使用的定义文字,直接从文字创建T的实例。

T operator "" _t(unsigned long long int v){ return {v};}