C'est un suivi de cette question.
Dans les commentaires et dans la réponse il est dit plus d'une fois qu' void{}
est ni un type valide-id, ni une expression valide.
C'était bon, il avait du sens, et c'est tout.
Puis je suis venu à travers [7.1.7.4.1/2] (espace réservé type de déduction) du projet de texte.
Là, il est dit que:
[...]
- pour un non-jetéreturn
instruction qui se produit dans une fonction déclarée avec un type de retour qui contient un espace réservé à un type,T
est déclaré le type de retour ete
est l'opérande de l'return
déclaration. Si l'return
instruction n'a pas d'opérande, puise
estvoid{}
;
[...]
Alors, est - void{}
(conceptuellement) légal ou pas?
Si c'est acceptable comme mentionné dans le projet de travail (même si seulement comme un - comme si c'est un - déclaration), il doit être en effet juridique. Cela signifie qu' decltype(void{})
devrait être valable aussi bien, comme un exemple.
Sinon, en cas de travail le projet d'utilisation void()
au lieu de void{}
?
Eh bien, pour être honnête, je suis assez sûr que je ne suis pas assez habile pour faire remarquer une erreur dans le projet de travail, de sorte que la vraie question est: ce qui est faux dans mon raisonnement?
Quel est exactement l' void{}
mentionné dans le paragraphe ci-dessus et pourquoi c'est une expression juridique dans ce cas?