Articles of c ++ 11

Initialisierungsliste funktioniert nicht mit Vektor in Visual Studio 2012?

Mögliche Duplikate: C ++ 11-functionen in Visual Studio 2012 Also habe ich heute über Wikipedia auf Wikipedia in C ++ 11 Initialisierungslisten gelesen und sah, dass C ++ 11 die folgende Syntax für die Standardcontainer unterstützt: std::vector v = { “xyzzy”, “plugh”, “abracadabra” }; std::vector v({ “xyzzy”, “plugh”, “abracadabra” }); std::vector v{ “xyzzy”, “plugh”, “abracadabra” […]

Warum führt die Eingrenzung der Konvertierung, die mit dem Initializer mit geschweiften Klammern verwendet wird, zu einem Fehler?

Ich lernte von Curly-Brace-begrenzte Initialisierer in The C ++ – Programmiersprache, 4. Ausgabe. > Kapitel 2: Eine Tour von C ++: Die Grundlagen. Ich zitiere aus dem folgenden Buch. Die Form = ist traditionell und stammt aus C, aber im Zweifelsfall verwenden Sie die allgemeine {} -Listenform (§ 6.3.5.2). Wenn nichts anderes, spart es Ihnen […]

Ist es möglich, std :: Objekte aus functionen zu entfernen? (C ++ 11)

Dieses Programm versucht, eine Zeichenfolge aus einer function zu entfernen und sie für die Konstruktion einer anderen Zeichenfolge zu verwenden: #include #include #include std::string && Get_String(void); int main(){ std::string str{Get_String()}; std::cout << str << std::endl; return 0; } std::string && Get_String(void){ std::string str{"hello world"}; return std::move(str); } Das Programm kompiliert, segmentiert aber bei der Ausführung. […]

Warum scheint std :: istringstream im tternären (? :) Operator anders zu sein als std :: ifstream?

Ich bin es gewohnt, kleine Kommandozeilen-Tools zu schreiben, die entweder einen Dateinamen haben oder von std::cin lesen, also benutze ich dieses Muster schon seit einiger Zeit: int main(int argc, char* argv[]) { std::string filename; // args processing … std::ifstream ifs; if(!filename.empty()) ifs.open(filename); std::istream& is = ifs.is_open() ? ifs : std::cin; std::string line; while(std::getline(is, line)) { […]

C ++ 11: classnmitglied in Mehrfachvererbung disambiguieren

Angenommen, ich habe diese variable Basisklassenvorlage: template class Base { public: // The member foo() can only be called when its template // parameter is contained within the Types … pack. template typename std::enable_if<Contains::value>::type foo() { std::cout << "Base::foo()\n"; } }; Das Member foo() kann nur aufgerufen werden, wenn sein Template-Parameter mindestens einem der Parameter […]

Statischer Constexpr odr-verwendet oder nicht?

Wie kommt es, dass das Folgende auf gcc funktioniert, aber nicht klingelt, ( siehe live ): constexpr int giveMeValue() { return 42; } struct TryMe { static constexpr int arr[1] = { giveMeValue() }; }; int main() { int val = TryMe::arr[0]; return val; } Ich bekomme ein ungetriggerses äußeres Symbol mit Klängen. Ist TryMe::arr[0] […]

Verwenden von Regex-Lookbehinds in C ++ 11

Warum kann ich in C ++ 11 keine Lookbehinds verwenden? Lookahead funktioniert gut. std::regex e(“(?<=a)b"); Dies wird die folgende Ausnahme auslösen: The expression contained mismatched ( and ). Dies wird keine Ausnahme auslösen: std::regex e(“a(?=b)”); Was vermisse ich?

STL-Algorithmen: Warum keine zusätzliche Schnittstelle für Container (zusätzlich zu Iteratorpaaren)?

Ich frage mich, warum die STL ihre Algorithmusfunktionen nicht überlädt, so dass ich sie aufrufen kann, indem ich einfach einen Container zur Verfügung stelle und nicht den ausführlicheren Weg einnehme, um Begin + End-Iteratoren zu übergeben. Ich verstehe natürlich, warum wir auch ein Iterator-Paar für die Verarbeitung von Untersequenzen eines Containers / Arrays verwenden wollen, […]

Unicode-Bezeichner und Quellcode in C ++ 11?

Ich finde im neuen C ++ Standard 2.11 Identifiers [lex.name] identifier: identifier-nondigit identifier identifier-nondigit identifier digit identifier-nondigit: nondigit universal-character-name other implementation-defined character mit dem zusätzlichen Text Ein Bezeichner ist eine beliebig lange Folge von Buchstaben und Ziffern. Jeder Universal-Charaktername in einer Kennung muss ein Zeichen bezeichnen, dessen Codierung in ISO 10646 in einen der in […]

C functionszeiger mit C ++ 11 Lambdas

Also versuche ich eine Integrationsfunktion zu schreiben, die mit C ++ 11 Lambdas verwendet werden soll. Der Code sieht ungefähr so ​​aus: double Integrate(std::function func, double a,double b,std::vector & params) { gsl_integration_workspace * w = gsl_integration_workspace_alloc (1000); gsl_function F; F.function =func; F.params = (void*)&params; double error,result; gsl_integration_qag (&F, a, b, 0, 1e-7, 1000,GSL_INTEG_GAUSS61,w, &result, &error); […]