Considerando la funzione di:Tipo di modello puntato dedotto da nullptr?
template <class T> void f(const T* const ptr);
Ciò che è T
per f(nullptr)
?
Considerando la funzione di:Tipo di modello puntato dedotto da nullptr?
template <class T> void f(const T* const ptr);
Ciò che è T
per f(nullptr)
?
Dovrei rispondere con questo non ce n'è. Da § 2.14.7/1 (sottolineatura mia):
Il puntatore letterale è la parola chiave nullptr. È un valore di tipo std :: nullptr_t. [Nota: std :: nullptr_t è un tipo distinto che è né un puntatore del tipo né un puntatore al tipo di membro; piuttosto, un valore di questo tipo è una costante di puntatore nullo e può essere convertito in un valore di puntatore nullo o un valore di puntatore membro nullo.
T *
avrebbe dovuto essere std::nullptr_t
e dal std::nullptr_t
è non un tipo di puntatore, ciò non è possibile. Cercando di chiamarlo con nullptr
su GCC 4.7.2 si dà un errore che indica che stava cercando di chiamare f(std::nullptr_t)
, ma aveva solo f(const T *)
, il che concorda con il fatto che uno std::nullptr_t
non è un T *
.