我不知道为什么我不能这样写代码:结合用户定义的字面在方法调用
constexpr double radius = 27_km.to_miles(); // _km returns Distance instance
// which has to_miles()
两个GCC 4.8.1和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
我甚至都不知道C++ 11的这个特性,谢谢! – orlp
你能否展示一个产生错误的完整例子? –
我已经添加了一个示例链接。 –