如何在变量上调用运算符“”

How to call Operator "" on variable

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

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)

显然不行。

有可能吗?

您可以像这样显式调用 user-defined-literal (UDL):

operator""_deg(foo);

这是一个demo

请注意,double 不是 UDL 的有效参数类型。您可以将其改为 long double