名前のアンダースコアに関する私の質問はここで部分的に回答されていますが、回答が不完全であるか、完全には理解していません。
宗派。C++11 標準の 2.14.8.7 では、このリテラル演算子を例として宣言しています。
long double operator "" _w(long double);
演算子を宣言する以外に、標準とその例はさらに 2 つのことを行います。これらは、別々に見た場合、それぞれ意味があります。
- 名前
_w
はアンダースコアで始まります。と - オペレーターをグローバル名前空間に配置します。
私の質問には2つの部分があります:
- 上記のリンクの回答によると、名前
_w
は識別子ではない、または識別子_w
は名前ではない、または...まあ、私は混乱しています。 - が大丈夫なら
_w
、大文字_W
でも大丈夫ですか? のように、 60.0 ワット60.0_W
を意味しますか? または、プリプロセッサが大文字のバージョンを誤って処理する可能性がありますか?
間違いなくあなたと同じように、私はグローバル名をアンダースコアで始める習慣はありません。これは、標準の宗派の習慣です。17.6.4.3.2.1 は明示的に非推奨のようです。したがって、アンダースコア、名前、およびリテラル演算子の問題に追加の光を当てることができれば、その光は高く評価されます.