最近、gcc-trunkソースでは、 "ユーザ定義リテラル"が実装されました。 私に教えてください、私は正しく `私は`ユーザー定義リテラルを定義することはできませんvariadicのcharテンプレートを理解していますか?Variadic charテンプレートのユーザ定義リテラル
template<char... chars>
int operator"" _call() { return sizeof...(chars); }
...
std::cout << "method"_call;
アップ。
template<char... chars>
int operator"" _call() { return sizeof...(chars); }
...
std::cout << 12345566_call;
と、この1が禁止されています:
template<char... chars>
int operator"" _call() { return sizeof...(chars); }
...
std::cout << method_call;
?この表現が許可されている理由を私は理解し `tを
何がポイントですか?
アップ。 これはあいまいさのためですか?
ありがとうございました。
私はこの変種について知っています。しかし、私はvariadic charテンプレートを期待していました。 – niXman
@niXman:これは「異形」ではありません。それが標準によって定義される方法です。ユーザ定義の整数リテラルと浮動小数点リテラルだけが 'template'フォームを使用することができます(したがって、 '12_call'があなたの最初のスニペットで動作します)。 –