なぜこのようなコードを書くことができないのか疑問に思っています:
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