20

std::stringC++14 には、ヘッダーからのさまざまなタイムスパンなどの標準定義のリテラルが含まれてい<chrono>ます。

それらを使用するには、言う必要がありますusing namespace std::literals;(または、さまざまなインライン名前空間にあるため、必要なリテラルに応じていくつかのバリエーションがあります)。

これはすべて良いことですが、なぜusing宣言が必要なのかが気になります。"hello world"s先頭にアンダースコアが付いていない UDL は実装用に予約されているため、標準準拠のプログラムで他の意味になる可能性はありません。

#include <string>では、リテラル変換関数をスコープに入れるのに十分でないのはなぜでしょうか? リテラル名前空間を明示的に含める必要があるのはなぜですか?

編集: N3531は私が見つけた提案の最新バージョンです。

[ポートランド] の議論の要件を次のように要約できます。

  • (関連するグループの) UDL 演算子にインライン名前空間を使用する
4

3 に答える 3