http://en.cppreference.com/w/cpp/memory/pointer_traitsおよび関連部位(ブースト介入によるブースト実施も示す)に見られるように、pointer_traits
はT*const
に特化していない。何故ですか?pointer_traitsが "T * const"に対して定義されていないのはなぜですか?
答えて
これはT* const
ためpointer_traits<>
の専門が存在する必要があることを指定するに強い意欲としての資格はありませんが、私はそれが含まれていなかった理由の説明がpointer_traits<>
はほとんどどこコンテキストで使用されることを意図されている可能性があり推測テンプレート引数の控除(特にタイプ控除)が行われます。
型推論は、トップレベルのCV-資格を無視しているので、T* const
またはT* volatile
またはT* const volatile
のための専門は、おそらく不要と判断された:もちろん
#include <type_traits>
template<typename T>
void foo(T)
{
static_assert(std::is_same<T, int*>::value, "Error"); // Does not fire!
// ^^^^
}
int main()
{
int x = 0;
int* const p = &x;
foo(p);
}
をこれはT* cv
のために専門を持つことで害することを意味するものではありませんこのシナリオでは、なぜこれらのスペシャライゼーションが欠落しているのかを説明することを意味しました。
同様に、iterator_traits<>
の特化は、T* cv
に対して提供されていません。
私は 'foo(T&)'型の関数テンプレートを持っていて、それは起動します:( –
@Johannes:そうです、トップレベルのcv修飾子が無視されない状況です。 (なぜなら、実際には 'shared_ptr <>'のために実装されているように思われます) –
'foo(T&)' a修飾子'T'はトップレベルではなく、'& 'はトップレベルであり、任意のcv修飾子は「1レベル下」です。 –
- 1. helloworldプログラムでReactDOMが定義されていないのはなぜですか?
- 2. なぜContentChildが定義されていないのですか?
- 3. なぜコードバが定義されていないのですか?
- 4. なぜauth2が定義されていないのですか?
- 5. なぜpdoが定義されていないのですか?
- 6. はなぜ定義されていないのですか?
- 7. 角度が定義されていない、なぜですか?
- 8. C#sizeof(定数)が定義されていないのはなぜですか
- 9. jqGrid:グリッドに対して定義したイベントが発射編集されないのはなぜですか?
- 10. アプリケーションで「url_for」が定義されていないのはなぜですか?
- 11. ElectronでcrashReporterが定義されていないのはなぜですか?
- 12. scikit-learnで `model.fit`が定義されていないのはなぜですか?
- 13. $ scope.logoがコントローラで定義されていないのはなぜですか?
- 14. ControlItemでSubItemsが定義されていないのはなぜですか?
- 15. ReactJSコードでthis.propsが定義されていないのはなぜですか?
- 16. 変数がディレクティブコントローラで定義されていないのはなぜですか?
- 17. コントローラで変数が定義されていないのはなぜですか?
- 18. limits.hでARG_MAXが定義されていないのはなぜですか?
- 19. ライブサーバでmysqli_fetch_all()が定義されていないのはなぜですか?
- 20. JavaScript関数 "a"が定義されていないのはなぜですか?
- 21. @classmethod変数が "定義されていない"のはなぜですか?
- 22. PageMethodsオブジェクトが定義されていないのはなぜですか?
- 23. chrome.browserAction.onClickedが定義されていないのはなぜですか?
- 24. SRWLockが定義されていないのはなぜですか?
- 25. ReactReduxが定義されていないのはなぜですか?
- 26. 関数名が定義されていないのはなぜですか?
- 27. LookupsClientが定義されていないのはなぜですか?
- 28. オブジェクトが定義されていないのはなぜですか?
- 29. なぜ私はReferenceError:_variableが定義されていないのですか?
- 30. 配列が定義されていないのはなぜですか?
これは、ポインタを格納する変数に適用され、論理ポインタのエンティティ自体には適用されないためです。それはあなたがそれをどのように格納するかについてのポインタの特性/特性については本当に重要ではありません。 – PlasmaHH