问题描述
您如何称呼此操作员?
用法示例:(请参见cppreference)
constexpr long double operator"" _deg ( long double deg )
{
return deg * 3.14159265358979323846264L / 180;
}
解决方法
此operator""
的主要用法是创建用户定义的文字。来自reference:
通过定义用户定义的后缀,允许整数,浮点数,字符和字符串文字产生用户定义类型的对象。
您可以像调用其他任何重载运算符一样调用此运算符:
std::cout << 42.5_deg; // with convenient operator syntax
std::cout << operator"" _deg(42.5); // with an explicit call
并非完全无关:如您的问题注释中所指出,此示例的名称很错误。它以度为单位并返回弧度,因此应将其命名为operator"" _rads
。 UDL的目的是拥有方便,易于阅读的语法,而依赖于它所执行的功能的功能会破坏它。
您可以使用此运算符执行几乎所有想要的计算(与其他运算符类似,对类型和传入参数的限制),例如:
constexpr long double operator"" _plus_one ( long double n )
{
return n + 1;
}
尽管此运算符的用法仍与上面相同。
这里是demo。