Compte tenu de la fonction:Type de modèle pointé déduit d'un nullptr?
template <class T> void f(const T* const ptr);
Qu'est-ce que T
pour f(nullptr)
?
Compte tenu de la fonction:Type de modèle pointé déduit d'un nullptr?
template <class T> void f(const T* const ptr);
Qu'est-ce que T
pour f(nullptr)
?
je dois répondre à cela avec n'y en a pas. De § 2.14.7/1 (Souligné par l'auteur):
Le pointeur littéral est le nullptr mot-clé. C'est une prvalue de type std :: nullptr_t. [Note: std :: nullptr_t est un type distinct qui est ni un type de pointeur ni un pointeur vers un type de membre; à la place, une prvalue de ce type est une constante de pointeur NULL et peut être convertie en une valeur de pointeur NULL ou une valeur de pointeur de membre NULL.
T *
Il faut être std::nullptr_t
et depuis std::nullptr_t
est pas un type de pointeur, ce n'est pas possible. Essayer de l'appeler avec nullptr
sur GCC 4.7.2 donne une erreur indiquant qu'il essayait d'appeler f(std::nullptr_t)
, mais seulement f(const T *)
, ce qui concorde avec le fait qu'un std::nullptr_t
n'est pas un T *
.