5
機能を考える:nullptrから推測された尖ったテンプレートタイプ?
template <class T> void f(const T* const ptr);
f(nullptr)
ためT
は何ですか?
機能を考える:nullptrから推測された尖ったテンプレートタイプ?
template <class T> void f(const T* const ptr);
f(nullptr)
ためT
は何ですか?
私はこれと答えなければならないでしょう。 §2.14.7/ 1(強調鉱山):
ポインタリテラルは、キーワードnullptrです。これは、std :: nullptr_t型のprvalueです。 [注意:std :: nullptr_tは、という特殊タイプであり、ポインタタイプもメンバータイプへのポインタもありません。むしろ、このタイプのprvalueはヌルポインタ定数であり、ヌルポインタ値またはヌルメンバポインタ値に変換できます。
T *
はstd::nullptr_t
なければならず、std::nullptr_t
ので不可能であるポインタ型、ないであろう。 GCC 4.7.2でnullptr
と呼ぶと、f(std::nullptr_t)
を呼び出そうとしていることを示すエラーが発生しますが、f(const T *)
しかありませんでした。これはstd::nullptr_t
がT *
ではないことに同意します。