我想知道为什么我不能写这样的代码:
constexpr double radius = 27_km.to_miles(); // _km returns Distance instance
// which has to_miles()
GCC 4.8.1 和 Clang 3.4 都抱怨他们找不到文字运算符operator"" _km.to_miles
,除非我27_km
用括号括起来:
constexpr double radius = (27_km).to_miles(); // fine
通过阅读标准的第 2.14.8 节,UDL 后缀不能包含句点,那么为什么编译器会这样解析代码呢?它们是正确的还是错误的?
编辑:您可以在此处查看完整示例(具有不同的 UDL 和方法名称):http: //ideone.com/rvB1pk