如何在变量

问题描述

所以我定义了这个运算符:

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