cout << std::is_assignable<int*, std::nullptr_t>::value << endl;
cout << std::is_assignable<int*&, std::nullptr_t>::value << endl;
La sortie est:C++ - Pourquoi nullptr_t n'est pas assignable à int *?
Je ne comprends pas pourquoi le premier chèque retourne faux
je peux assigner nullptr à une référence à pointeur, mais je ne peut pas l'affecter à un pointeur brut?
C'est l'inverse!
int* p = nullptr;
int*& pref = nullptr;
La deuxième mission, comme prévu, des drapeaux une erreur:
error: cannot bind non-const lvalue reference of type int*& to an rvalue of type int*
Quelqu'un peut-il me expliquer ce qui se passe?
Il est parce que vous essayez d'initialiser une référence avec nullptr, ne lui assigner. Ne laissez pas '=' vous confondre. – VTT
Je ne vois aucune affectation 'int *' ici, mais 'int * &' et cela semble erroné. – Fabien
Bien sûr, vous ne pouvez pas affecter 'int *'. Sinon, quelque chose comme ça compilerait 'int a = 1; & a = nullptr; ' –