10

回線を利用する場合

using std::literals::chrono_literals::operator""s;

g++ 6.3.0 では、コンパイラは次のような警告を発行します。

警告: 「_」が前に付いていないリテラル演算子サフィックスは、将来の標準化のために予約されています

using std::literals::chrono_literals::operator""s;

MSVS でも同様の警告が発行されます。ただし、clang 3.8.0 ではそのような警告は発行されません。

は chrono ライブラリの標準で定義されているためoperator""s、名前を定義するのではなく名前をインポートするだけなので、これは警告を出すべきではありませんか?

4

1 に答える 1

2

おそらく、この文言は十分に明確です— [over.literal]/1 :

一部のリテラル サフィックス識別子は、将来の標準化のために予約されています。17.6.4.3.5 を参照。リテラル演算子 IDがそのようなリテラル接尾辞識別子を使用する宣言は、形式が正しくありません。診断は必要ありません。

これは、「名前」がliteral-operator-idである(UDL operator)宣言を参照していると解釈できます。もちろん、 literal-operator-idは修飾されていないため、これはあなたのケースを除外します。[reserved.names]/2についても同様で、「コンテキスト」はユーザー定義のリテラル演算子の宣言です。

于 2017-01-03T14:23:34.833 に答える