Bon point. Je pense qu'il y a deux choses à regarder: 1) comme vous l'avez souligné la non-classe rvalue thingsy et 2) comment la résolution de surcharge fonctionne:
Les critères de sélection pour le meilleur
la fonction sont le nombre d'arguments,
comment bien les arguments correspondent à la
paramètre de type-liste des candidats
fonction, [...]
Je n'ai rien vu dans la norme qui me dit non-classe rvalues sont spécialement traités au cours de la résolution de surcharge.
Votre question est abordée dans le projet de la norme, j'ai si (N-4411) un peu:
Ce n'est cependant une lecture en parallèle de référence de liaison, la conversion implicite des séquences, des références, et de résolution de surcharge en général:
13.3.3.1.4 de Référence de liaison
2 Lorsqu'un paramètre de type de référence
n'est pas lié directement à un argument
l'expression, la conversion de la séquence
est celui nécessaire à la conversion de l'argument de l'expression de la sous-jacentes
la catégorie de référence selon
pour 13.3.3.1.
et
13.3.3.2 Classement de la conversion implicite séquences
3 Deux la conversion implicite des séquences de
la même forme se confondent
conversion de séquences, à moins que l'un des
règles suivantes s'appliquent:
- Conversion Standard de la séquence S1 est un meilleur taux de conversion de la séquence de
standard
la conversion de la séquence S2 si
- S1 et S2 sont référence des liaisons (8.5.3) et ne se réfère à une
implicite de l'objet en paramètre d'une
non statiques
membre de la fonction déclarée sans ref-qualificatif, et soit S1 lie un
lvalue de référence
pour une lvalue et S2 se lie référence rvalue ou S1 lie une rvalue
référence à une rvalue et S2
lie une lvalue de référence.
[ Exemple:
int i;
int f();
int g(const int&);
int g(const int&&);
int j = g(i); // calls g(const int&)
int k = g(f()); // calls g(const int&&)