我想实现两个用户定义的文字,_kmh 表示每小时公里数,_ms 表示每秒米数。我已经有两个结构和运算符 "" 函数:
constexpr KMH operator "" _ms(long double val) {
return KMH {static_cast<double>(val * 3.6)};
}
constexpr MS operator "" _kmh(long double val) {
return MS {static_cast<double>(val / 3.6)};
}
我希望它以我可以执行以下操作的方式实现它:
void func(MS speed) {}
int main() {
func(10.0_kmh); // this works
func(10.0_ms); // this does not
}
我不能让第二个电话工作,因为我不能像这样实现它:
constexpr KMH operator "" _kmh(long double val) {
return KMH {static_cast<double>(val)};
}
这显然给了我错误
错误:仅返回类型不同的函数不能重载
有没有办法实现我想要的?