void operator"" test(const char* str, size_t sz )
{
std::cout<<str<<" world";
}
int main()
{
"hello"test;
return 0;
}
、これは「警告: 『_』が先行していないリテラル演算子サフィックスは、将来の標準化のために予約されています[デフォルトで有効になって]」生成」この警告が生成された理由を私は理解しますが、GCCは言うユーザ定義のリテラルでアンダースコアが見つからないというGCCの警告を無効にすることはできますか? GCC 4.7で
をデフォルトで有効になっています。
-wフラグですべての警告を無効にするだけでなく、この警告を無効にすることはできますか?
うわー、私はC++ 11が[operator ""](http://ideone.com/ZDyCML)のオーバーロードをサポートしていることは知っていません。ところで、ideoneに存在するg ++は少なくとも警告しませんが、ローカルのコンパイラは警告します。他人の情報(コンテキストを知らない人)のために、 'test'を' _test'に変更することで警告が消えます。 – iammilind
なぜあなたはしたいですか?後のC++バージョンには、潜在的に競合するシンボルが含まれる可能性があります。それは良くないね*。 GCCの問題は、それがあなたに*エラー*を与えるものではないということです。 –
@ニコル、あなたのコメントを感謝します。私は-Werrorを使用しているので、この警告は実際に私にエラーをもたらします。 GCCには多くの貴重な警告がありますが、プログラマがそれらを明示的に無効にすることは可能です。 – cmeub