cppreference web siteとdeclval紹介:何の定義がdeclvalのために存在していないので、それは未評価のコンテキストC++ 11 declval:「評価されていないコンテキスト」とは何ですか?
のみを使用することができることを
注意を私はISO C++ 11標準をチェックし、「のないフレーズがありません評価されていない文脈 "。これは、原則をコンパイルする際のコンセプトなのでしょうか?
ありがとうございました。規格から
cppreference web siteとdeclval紹介:何の定義がdeclvalのために存在していないので、それは未評価のコンテキストC++ 11 declval:「評価されていないコンテキスト」とは何ですか?
のみを使用することができることを
注意を私はISO C++ 11標準をチェックし、「のないフレーズがありません評価されていない文脈 "。これは、原則をコンパイルする際のコンセプトなのでしょうか?
ありがとうございました。規格から
[第5、#7]いくつかの状況において
、未評価のオペランドが(5.2.8、5.3.3、5.3.7、 7.1.6.2)現れます。未評価のオペランドは評価されません。 [注:評価されていないオペランドでは、静的でないクラスメンバの名前が(5.1)であり、オブジェクトまたは関数の名前の 自体は の定義が必要です(3.2)。 - エンドノート]
その使用状況は次のとおり
decltype(declval<T>())
[セクション7.1.6.2]a + b;
のようなスタンドアロン式としては使用できません。以下マッサからのコメント1として :上述の文脈上のもので
、 未評価のオペランドを表す式が展開されるように、その結果の種類(及び、はsizeofの場合 、そのタイプのサイズ)を決定することができますが、 式の評価は決して最終的な プログラムに組み込まれません。
例: "1 \ n"を標準出力に出力するコードを生成しません。
C++で "評価されていないオペランド"を検索する11 –