In Bezug auf das Papier, das beschreibt, entfernen die Leere Spezialisierungen für Std :: Future und Std :: Versprechen P0241R0. Dies ist vielleicht eine blöde Frage, aber die vorgeschlagene Lösung besteht darin, die void-Spezialisierung vollständig zu entfernen, aber was sollen die Leute dann tun, wenn sie ein std::future<void>
Objekt instanziieren wollen?Entfernen der leeren Spezialisierungen für std :: future und std :: promise
Antwort
Wie in der Referenz erwähnt, wäre dies möglich if void
were a regular type.
void get_value() {
void x;
return x;
}
So funktioniert es in einigen anderen Sprachen, so ist es nicht ohne Präzedenzfall. In anderen Sprachen wird der Typ "Einheit" genannt, weil er genau einen möglichen Wert hat. (Andere Sprachen haben auch den "Null" -Typ, der keine möglichen Werte hat. Wenn Sie also versuchen, einen zu erstellen, erhalten Sie einen Fehler. Er heißt "null", hat aber nichts mit Null-Zeigern zu tun.)
Der Zweck von a std :: future soll wissen, wann ein Prozess ohne Rückgabewert beendet wurde. Im Grunde ist es ein Synchronisationswerkzeug.
Dies beantwortet die Frage nicht. –
- 1. Bedingte Std :: Future und Std :: Async
- 2. C++ was sind std :: shared_future und std :: promise
- 3. Ist std :: future spin-wait?
- 4. Unterstützt std :: future Polymorphismus?
- 5. aufrufen std :: future :: get wiederholt
- 6. Wie man std :: promise in einen Thread übergibt? von std :: move oder von std :: shared_ptr?
- 7. Std :: Future oder Std :: shared_future auf mehrere Threads warten
- 8. Wie kündige ich ein std :: future?
- 9. Warum std :: future template Argumenttyp ist Referenztyp?
- 10. Ist std :: future auf die Zerstörung warten
- 11. std :: Lösch- und std :: entfernen Kombination bestimmtes Element nicht gelöscht
- 12. std :: copy std :: cout für std :: pair
- 13. std :: async und std :: zukünftiges Verhalten
- 14. Ist std :: promise <T> thread-safe?
- 15. Warum std :: future <T> und std :: shared_future <T> nicht Mitglied swap() bieten?
- 16. std :: atomics und std :: lock_guard oder nur std :: lock_guard
- 17. Sammen Vorlage Spezialisierungen
- 18. Unterschied zwischen std :: set und std :: priority_queue
- 19. Vergleichsfunktion für std :: vector von std :: arrays
- 20. std :: min std :: Chrono :: Dauer verschiedenen Typen
- 21. Verwirrung über std :: weniger und std :: mehr mit std :: sort
- 22. std :: make_shared() std :: weak_ptr und zyklische Referenzen
- 23. std :: Futures und Ausnahme
- 24. std :: for_each und std :: Vektor Destruktor Aufruf
- 25. Std :: Mutex nicht ordnungsgemäß für Std :: Cout
- 26. C++ Wie kann ich .get() std :: future aus einem Vektor?
- 27. Wie std :: bind mit std :: function und std :: map verwenden
- 28. std :: back_inserter für ein std :: set?
- 29. Unterschiede zwischen std :: is_integer und std :: is_integral?
- 30. Was ist der Unterschied zwischen std :: set und std :: map
Um die Frage "was wird von Leuten erwartet?" Direkt zu beantworten, machen sie nichts anderes. 'Zukunft' geht nicht weg, es braucht keine Spezialisierung. –
@DrewDormann: Von dem, was ich verstehe, müssten Sie schließlich einige Änderungen vornehmen, da das Entfernen der Spezialisierung "std :: promise" bedeuten würde, dass die Funktion 'set_value()' nicht mehr existiert und Sie 'set_value' aufrufen müssten ({}) stattdessen. –