问题描述
所以我定义了这个运算符:
constexpr double operator"" _deg(double deg)
{
return deg * M_PI / 180.0L;
}
到目前为止一切顺利。在常量上,我现在可以这样写:
90.0_deg
但是,如果我们定义了一个double并想将其转换,该怎么办?
double foo = 3.14
您如何在foo上调用运算符?
我尝试过:
_deg(foo)
但是它说foo没有定义。
也
operator""(foo)
显然不起作用。
有可能吗?
解决方法
您可以像这样显式调用用户定义的文字(UDL):
operator""_deg(foo);
这里是demo。
请注意,double
不是UDL的有效参数类型。您可以改为将其更改为long double
。