2017-06-21 4 views
1

Je suis nouveau en C++. J'ai une question comme si nous pourrions définir une référence rvalue à null?Définir les références rvalue à null

class Foo { }; 
Foo&& foo = nullptr; 

j'ai eu l'erreur: référence au type 'Foo' ne pouvait pas se lier à un rvalue de type 'nullptr_t'

+1

La référence est un type qui n'a pas de valeur nulle. C'est vrai pour tout type de références - valeurs ou valeurs. Si vous voulez avoir des valeurs nulles, utilisez des pointeurs. –

+0

La vraie question est "pourquoi". –

Répondre

1

I have a question like whether we could define a rvalue references to null?

La norme (projet de travail) dit que no, it's not possible (accent mine):

A reference shall be initialized to refer to a valid object or function. [ Note: In particular, a null reference cannot exist in a well-defined program, because the only way to create such a reference would be to bind it to the “object” obtained by indirection through a null pointer, which causes undefined behavior.

Elle s'applique à la fois aux références lvalue et rvalue. Voir this bullet pour plus de détails:

Except where explicitly noted, they are semantically equivalent and commonly referred to as references.