ユーザー定義リテラルよくわかんない
N2800(Committee Draft)のユーザー定義リテラルのとこと
元になった提案のN2765に以下のような例があります。
13.5.8 パラグラフ8
void operator "" _km(long double); // OK
戻り値の型をvoidにできちゃっていいの?
あと、N2800には書いてないけど、N2765にはあるこれ
long double operator "" w(long double); std::string operator "" w(char16_t const*, size_t); unsigned operator "" w(char const*); int main() { 1.2w; // calls operator "" w(1.2L) u"one"w; // calls operator "" w(u"one", 3) 12w; // calls operator "" w("12") "two"w; // Error: No applicable literal operator }
main関数の3行目は何で
calls operator "" w(12)
ではなく
calls operator "" w("12")
なの?文字列の方が優先されるの?
それとも間違いだからN2800には書いてないの?
※ 追記:N2800にも書いてるみたい。