Als «c++17» getaggte Fragen

C ++ 17 ist der Name des 2017 genehmigten C ++ - Standards. Er baut auf dem vorherigen C ++ 14-Standard auf, verbessert die Kernsprache und die Standardbibliothek und fügt einige neue Sprachfunktionen hinzu.

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
std :: pair <auto, auto> Rückgabetyp
Ich habe mit autoin herumgespielt std::pair. Im folgenden Code soll die Funktion feinen std::pairTyp zurückgeben, der von einem Vorlagenparameter abhängt. Ein Arbeitsbeispiel: BEISPIEL 1 template &lt;unsigned S&gt; auto f() { if constexpr (S == 1) return std::pair{1, 2}; // pair of ints else if constexpr (S == 2) return std::pair{1.0, …

1
Wie finden C ++ - Compiler eine externe Variable?
Ich kompiliere dieses Programm mit g ++ und clang ++. Es gibt einen Unterschied: g ++ druckt 1, aber clang ++ druckt 2. Es scheint, dass g ++: die externe Variable im kürzesten Bereich definiert ist. clang ++: Die externe Variable wird im kürzesten globalen Bereich definiert. Hat die C …


1
Ist das ein Fehler in std :: gcd?
Ich bin auf dieses Verhalten gestoßen std::gcd, das ich unerwartet fand: #include &lt;iostream&gt; #include &lt;numeric&gt; int main() { int a = -120; unsigned b = 10; //both a and b are representable in type C using C = std::common_type&lt;decltype(a), decltype(b)&gt;::type; C ca = std::abs(a); C cb = b; std::cout &lt;&lt; …


2
Ist es GCC9 erlaubt, den wertlosen Zustand der std :: -Variante zu vermeiden?
Ich habe kürzlich eine Reddit-Diskussion verfolgt, die zu einem schönen Vergleich der std::visitOptimierung zwischen Compilern führte. Mir ist Folgendes aufgefallen: https://godbolt.org/z/D2Q5ED Sowohl GCC9 als auch Clang9 (ich denke, sie haben dieselbe stdlib) generieren keinen Code zum Überprüfen und Auslösen einer wertlosen Ausnahme, wenn alle Typen bestimmte Bedingungen erfüllen. Dies führt …

1
Warum funktioniert std :: swap nicht mit Vektorelementen <bool> unter Clang / Win?
Ich habe folgenden Code: #include &lt;vector&gt; #include &lt;utility&gt; int main() { std::vector&lt;bool&gt; vb{true, false}; std::swap(vb[0], vb[1]); } Argumente über die Vernunft vector&lt;bool&gt;beiseite, das funktionierte gut bei: Clang für Mac Visual Studio für Windows GCC für Linux Dann habe ich versucht, es mit Clang unter Windows zu erstellen und habe den …

1
Kann der Konstruktor std :: vector range explizite Konvertierungen aufrufen?
Ist das folgende Programm gut formuliert? #include &lt;vector&gt; struct A { explicit A(int) {} }; int main() { std::vector&lt;int&gt; vi = {1, 2, 3, 4, 5}; std::vector&lt;A&gt; va(vi.begin(), vi.end()); } Gemäß C ++ 17 [sequence.reqmts] ist die Anforderung für X u(i, j); Wo Xist ein Sequenzcontainer, ist: Tsoll EmplaceConstructiblein Xvon …
14 c++  c++17 

3
Überladen Sie eine Lambda-Funktion
Wie kann man eine einfache lokale Lambda-Funktion überladen? SSE des ursprünglichen Problems: #include &lt;iostream&gt; #include &lt;map&gt; void read() { static std::string line; std::getline(std::cin, line); auto translate = [](int idx) { constexpr static int table[8]{ 7,6,5,4,3,2,1,0 }; return table[idx]; }; auto translate = [](char c) { std::map&lt;char, int&gt; table{ {'a', 0}, …

1
Wie funktioniert die Implementierung von c ++ nullptr?
Ich bin gespannt, wie nullptrdas geht. Die Standards N4659 und N4849 sagen: es muss Typ haben std::nullptr_t; Sie können seine Adresse nicht nehmen; Es kann direkt in einen Zeiger und einen Zeiger auf ein Mitglied konvertiert werden. sizeof(std::nullptr_t) == sizeof(void*);; seine Umwandlung in boolist false; sein Wert kann identisch (void*)0, …



1
Mehrdeutiger Operator in gcc
Ich habe eine Funktionsvorlage zum Drucken einiger STL-Container erstellt #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;string&gt; template &lt;template &lt;typename, typename&gt; class C, typename T, typename A&gt; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const C&lt;T, A&gt;&amp; container) { for (auto&amp; elem : container) { os &lt;&lt; elem &lt;&lt; " "; } return os; } int …
13 c++  c++17 

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.