Als «c++20» getaggte Fragen

C ++ 20 ist das Ziel für die Version von C ++ nach C ++ 17. Dieses Tag sollte (zusammen mit dem C ++ - Tag) für Fragen zu C ++ - Funktionen verwendet werden, die für C ++ 20 auf dem richtigen Weg sind.

3
Was ist der Anwendungsfall für explizite (bool)
In C ++ 20 wurde explizit (bool) eingeführt, das beim Kompilieren bedingt auswählt, ob ein Konstruktor explizit gemacht wird oder nicht. Unten ist ein Beispiel, das ich hier gefunden habe . struct foo { // Specify non-integral types (strings, floats, etc.) require explicit construction. template <typename T> explicit(!std::is_integral_v<T>) foo(T) {} …
24 c++  c++20  explicit 

2
Inline-Bedeutung in Modulschnittstellen
Betrachten Sie die Header-Datei: class T { private: int const ID; public: explicit T(int const ID_) noexcept : ID(ID_) {} int GetID() const noexcept { return ID; } }; oder alternativ: class T { private: int const ID; public: explicit T(int const ID_) noexcept; int GetID() const noexcept; }; inline …

3
C ++ 20-Konzepte: Welche Vorlagenspezialisierung wird ausgewählt, wenn das Vorlagenargument für mehrere Konzepte geeignet ist?
Gegeben : #include <concepts> #include <iostream> template<class T> struct wrapper; template<std::signed_integral T> struct wrapper<T> { wrapper() = default; void print() { std::cout << "signed_integral" << std::endl; } }; template<std::integral T> struct wrapper<T> { wrapper() = default; void print() { std::cout << "integral" << std::endl; } }; int main() { wrapper<int> …

1
'auto' als Platzhalter für Vorlagenargumente für einen Funktionsparameter
In C ++ 20 kann der autoFunktionsparametertyp verwendet werden. Ermöglicht es auch die Verwendung autoeines Platzhalters als Vorlagenargument (nicht ähnlich, aber in gewisser Weise im Sinne der C ++ 17-Vorlage <auto> ) für den Funktionsparametertyp? Also der folgende Code vor C ++ 20: template<typename First, typename Second> void printPair(const std::pair<First, …
22 c++  templates  auto  c++20 




2
Warum überprüft das Konzept same_as die Typgleichheit zweimal?
Als ich mir die mögliche Implementierung des same_as-Konzepts unter https://en.cppreference.com/w/cpp/concepts/same_as ansah, bemerkte ich, dass etwas Seltsames passiert. namespace detail { template< class T, class U > concept SameHelper = std::is_same_v<T, U>; } template< class T, class U > concept same_as = detail::SameHelper<T, U> && detail::SameHelper<U, T>; Die erste Frage ist, …
19 c++  c++20  concept 

4
Fortlaufende Aufzählung C ++ 11
Gibt es eine Möglichkeit, in C ++ 11 zu überprüfen, ob eine Aufzählung fortlaufend ist ? Es ist voll gültig, eine Aufzählung anzugeben, die nicht sind. Gibt es möglicherweise eine Funktion wie ein Typmerkmal in C ++ 14, C ++ 17 oder C ++ 20, um zu überprüfen, ob die …
17 c++  c++11  c++14  c++17  c++20 

1
Warum sucht der C ++ - Standard nach Dateien, die so suchen, wie sie es tun?
C ++ verwendet den streamoffTyp, um einen Offset innerhalb eines (Datei-) Streams darzustellen, und ist in [stream.types] wie folgt definiert: using streamoff = implementation-defined ; Der Typ Streamoff ist ein Synonym für einen der vorzeichenbehafteten integralen Grundtypen mit ausreichender Größe, um die maximal mögliche Dateigröße für das Betriebssystem darzustellen. 287) …

1
Warum ist volatile in C ++ 20 veraltet?
Laut cppreference sind die meisten Verwendungen des volatileSchlüsselworts in C ++ 20 veraltet. Was ist der Nachteil von volatile? Und was ist die alternative Lösung, wenn sie nicht verwendet wird volatile?
17 c++  volatile  c++20 



2
Warum ist std :: swap nicht vor C ++ 20 als constexpr markiert?
In C ++ 20 std::swapwird eine constexprFunktion. Ich weiß, dass die Standardbibliothek beim Markieren von Dingen wirklich hinter der Sprache zurückgeblieben ist constexpr, aber bis 2017 <algorithm>war sie ziemlich genau wie eine Reihe anderer Dinge. Noch std::swapnicht. Ich erinnere mich vage an einen seltsamen Sprachfehler, der diese Markierung verhindert, aber …

2
Ist std :: chrono :: Jahre Speicher wirklich mindestens 17 Bit?
Von cppreference std::chrono::years (since C++20) duration</*signed integer type of at least 17 bits*/, std::ratio<31556952>> Mit libc++scheint es , die unterstreicht Speicherung std::chrono::yearsheißt , shortdie signiert ist 16 Bit . std::chrono::years( 30797 ) // yields 32767/01/01 std::chrono::years( 30797 ) + 365d // yields -32768/01/01 apparently UB Gibt es einen Tippfehler bei …
14 c++  chrono  c++20  libc++ 

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.