7
votes

Supprimer les spécialisations du vide pour STD :: Future et STD :: Promettre

En ce qui concerne le papier qui décrit la suppression des spécialisations du vide pour STD :: Future et STD :: promesses p0241r0 . Cela peut être une question stupide, mais la solution proposée consiste à éliminer complètement la spécialisation du vide, mais à quoi les gens sont-ils censés faire quand ils veulent instancer un std :: futur objet ?


0 commentaires

3 Réponses :


6
votes

Comme indiqué dans la référence, cela serait possible Si void code> était un type régulier .

void get_value() {
    void x;
    return x;
}


3 commentaires

Pour répondre directement à la question "Qu'est-ce que les gens devraient faire" question - ils ne font rien de différent . Future Ne va pas disparaître, il n'a pas besoin de spécialisation.


@ Drewdormann: D'après ce que je comprends, vous devriez faire des changements éventuellement, car vous supprimez le std :: promess Spécialisation signifierait que le set_value () fonction Existe plus longtemps, et vous devriez appeler set_value ({}) à la place.


La déclaration annulation x est invalide, mais comme un prix de consolation Le retour Void-Expression Construction est valide à la fois C et C ++, par exemple. Vous pouvez écrire retour get_value (); dans une autre fonction. Il n'a rien à voir avec le problème futur par tel, mais est un moyen utile d'écrire un code auto-documentant qui signifie "Ceci est l'action destinée à être effectuée lors de la sortie de cette une fonction". Cela peut être une question de style / préférence, et je le trouve parfois utile d'un idiome, en particulier sur des compilateurs de C plus simples qui l'utilisent comme indice d'optimisation de la queue unique (sinon ils ne le font pas).



-3
votes

Le but d'un STD :: futur est de savoir quand un processus sans valeur réelle à revenir est terminé. Donc, fondamentalement, c'est un outil de synchronisation.


1 commentaires

Cela ne répond pas à la question.



0
votes

Avoir bricolé de la mise en oeuvre de la TS, il semble possible d'éviter de se spécialiser pour annuler si la mise en œuvre utilise des objets intelligents avec activation_if, par exemple xxx


0 commentaires