私が知る限り、完全修飾という用語は標準( eg )には記載されていませんが、オンラインで何度も「聞く」ことを思い出してください。
名前が完全に修飾されていると言うとき、人々はどういう意味ですか?
これは重要ですか?
A::f()
それともこれだけ?
::A::f()
そして、それが標準である場合、どの文言を見つけられませんか?
スコープ解決演算子を使用する識別子は、[expr.prim.id.qual]による修飾名です。それ以外の場合は無資格です。
標準は完全修飾の意味を定義していませんが、は[library]/[requirements]/[organization]/[contents]でそれを言及します(標準ドラフトからの引用)
標準ライブラリで定義されている名前xが言及されている場合は、特に明記されていない限り、名前xは:: std :: xとして完全修飾されていると見なされます。たとえば、ライブラリ関数FのEffects:要素がライブラリ関数Gの呼び出しとして記述されている場合、関数:: std :: Gが意味されます。
ウィキペディアで定義されている 完全修飾名 :
コンピュータプログラミングでは、完全修飾名は、呼び出しのコンテキストに関係なく、呼び出しが参照するオブジェクト、関数、または変数を指定する明確な名前です。
グローバル名前空間から始まる修飾された名前のみが、コンテキストなしで明確になります。これは一般的な使用法です。
確かに、それは標準的な用語ではありません。規格には定義がありません。
ただし、「完全修飾」というフレーズは、[コンテンツ](執筆時点での最新ドラフトN4800の15.5.1.1「ライブラリコンテンツ」)の段落3に1回だけ表示されます。
標準ライブラリで定義されている
x
という名前が言及されている場合は、特に明記されていない限り、x
は::std::x
として完全修飾されていると見なされます。
したがって、この定義では、::
で始まる名前のみが完全修飾されています。