Als «c++» getaggte Fragen

C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entwickelt und hat eine ähnliche Syntax, ist aber jetzt eine völlig andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll. Verwenden Sie ein versionierungsspezifisches Tag für Fragen zu einer bestimmten Standardversion [C ++ 11], [C ++ 14], [C ++ 17] oder [C ++ 20] usw.


2
Wie bestimme ich, welche Header-Dateien eingeschlossen werden sollen?
Angenommen, ich habe den folgenden (sehr einfachen) Code. #include <iostream> int main() { std::cout << std::stoi("12"); } Dies lässt sich sowohl in g ++ als auch in clang gut kompilieren. Es kann jedoch nicht mit folgendem Fehler auf MSVC kompiliert werden: Fehler C2039: 'stoi': ist kein Mitglied von 'std' Fehler …
13 c++ 


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

1
Warum erhalten gleichnamige externe lokale Variablen in verschiedenen Blöcken unterschiedliche Verknüpfungen zwischen Compilern in C ++?
Während ich nur überprüfte, welche Verknüpfungen externen lokalen Variablen gewährt werden, stellte ich fest, dass sich Compiler unterschiedlich verhalten Wenn ich zum Beispiel den folgenden Code getestet habe, wie Sie in den Kommentaren sehen, varhaben die Variablen unterschiedliche Verknüpfungen // foo.cpp int var = 10; // external linkage // main.cpp …
12 c++  g++  clang++  extern  linkage 


1
Muss `gleichheit_vergleich_mit`` gemeinsame_referenz` erfordern?
Das Konzeptequality_­comparable_with<T, U> soll erklären, dass Objekte vom Typ Tund Umiteinander verglichen werden können, und wenn dies der Fall ist, hat dies die erwartete Bedeutung. Das ist gut. Dieses Konzept muss common_reference_t<T&, U&>jedoch auch existieren. Der Hauptimpuls für common_referenceund die damit verbundene Funktionalität scheint darin zu bestehen, Proxy-Iteratoren zu ermöglichen …


2
Ist es möglich, zwei Zeichenfolgen vom Typ "const char *" zur Kompilierungszeit zu verketten?
Natürlich können wir zwei Zeichenfolgenliterale in einer constexprFunktion verketten, aber was ist mit der Verkettung eines Zeichenfolgenliterals mit einer Zeichenfolge, die von einer anderen constexprFunktion wie im folgenden Code zurückgegeben wird? template <class T> constexpr const char * get_arithmetic_size() { switch (sizeof(T)) { case 1: return "1"; case 2: return …
12 c++  c++17 

1
C ++ 20-Definition außerhalb der Klasse in einer Vorlagenklasse
Bis zum C ++ 20-Standard von C ++, als wir einen Operator außerhalb der Klasse definieren wollten, der einige private Mitglieder einer Vorlagenklasse verwendet, verwendeten wir ein ähnliches Konstrukt: template <typename T> class Foo; template <typename T> constexpr bool operator==(T lhs, const Foo<T>& rhs); template <typename T> class Foo { …
12 c++  templates  c++20 

1
Ist das Captureless Lambda nach dem Standard garantiert leer?
Ich suche nach einer Möglichkeit, leere (Captureless) Lambdas von anderen Lambdas in einer Vorlagenfunktion zu identifizieren. Ich verwende derzeit C ++ 17, bin aber auch neugierig auf C ++ 20-Antworten. Mein Code sieht folgendermaßen aus: template<typename T> auto func(T lambda) { // The aguments of the lambdas are unknown if …
12 c++  lambda  c++17  c++20 


2
Warum ist eine Aufzählungsvariable hier ein Wert?
Beispiel: typedef enum Color { RED, GREEN, BLUE } Color; void func(unsigned int& num) { num++; } int main() { Color clr = RED; func(clr); return 0; } Beim Kompilieren wird folgende Fehlermeldung angezeigt: <source>: In function 'int main()': <source>:16:9: error: cannot bind non-const lvalue reference of type 'unsigned int&' …


1
Öffentlicher Alias ​​für nicht öffentlichen Typ
Ich frage mich, ob es C ++ gültig ist: class Test { struct PrivateInner { PrivateInner(std::string const &str) { std::cout << str << "\n"; } }; public: using PublicInner = PrivateInner; }; //Test::PrivateInner priv("Hello world"); // Ok, private so we can't use that Test::PublicInner publ("Hello World"); // ?, by using …

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.