Articles of c ++ 17

Restreindre les arguments des modèles variadiques

Peut-on restreindre les arguments des modèles variadiques à un certain type? Ie, réaliser quelque chose comme ça (pas de C ++ réel bien sûr): struct X {}; auto foo(X… args) Ici, mon intention est d’avoir une fonction qui accepte un nombre variable de parameters X Le plus proche est celui-ci: template auto foo(Args… args) mais […]

Pourquoi cette «variable externe non définie» n’entraîne-t-elle pas une erreur de l’éditeur de liens dans C ++ 17?

J’ai compilé et exécuté le programme suivant dans un compilateur C ++ 17 (Coliru). Dans le programme, j’ai déclaré une variable extern , mais je ne l’ai pas définie . Cependant, le compilateur ne donne pas d’ erreur de l’éditeur de liens . #include extern int i; // Only declaration int func() { if constexpr […]

Où utiliser std :: variant sur l’union?

Veuillez expliquer quelle est la différence entre union et std::variant et pourquoi std::variant été introduit dans la norme? Dans quelles situations devrions-nous utiliser std::variant plutôt que la vieille école?

Est-ce que “enum class” est un type de classe en C ++?

J’ai lu sur la déclaration d’énumération en C ++ en utilisant cppreference . Ensuite, j’ai créé la classe Enum et vérifié s’il s’agit d’un type de classe ou non utilisant std::is_class . #include enum class Enum { red = 1, blue, green }; int main() { std::cout << std::boolalpha; std::cout << std::is_class::value << '\n'; } […]

experimental :: erreur de l’éditeur de fichiers

J’essaie d’utiliser les nouvelles fonctionnalités de c ++ 1z en tête du développement de gcc 6.0. Si j’essaie ce petit exemple: #include #include namespace fs = std::experimental::filesystem; int main() { fs::path p1 = “/home/pete/checkit”; std::cout << "p1 = " << p1 << std::endl; } J’ai eu: / opt / linux-gnu_6-20151011 / bin / g ++ […]

Est-il possible en C ++ moderne de transmettre un littéral de chaîne en tant que paramètre à un modèle C ++?

Est-il possible dans “C ++ moderne” (C ++ 17 ou supérieur) de passer un littéral de chaîne en tant que paramètre à un modèle C ++? Je me rends compte que vous pouvez le faire avec l’argument du constructeur; Je pensais juste qu’il serait plus pratique de l’avoir comme argument de modèle, plutôt que de […]

Avantages de l’auto dans les parameters de modèle en C ++ 17

Quels sont les avantages auto parameters de template auto in qui seront (éventuellement) introduits avec C ++ 17? Est-ce juste une extension naturelle de l’ auto lorsque je veux instancier du code de modèle? auto v1 = constant; // v1 == 5, decltype(v1) is int auto v2 = constant; // v2 == true, decltype(v2) is […]

Le standard C ++ garantit-il que l’initialisation uniforme est sûre?

#include using namespace std; struct A { A() { cout << "A" << endl; } ~A() { cout << "~A" << endl; } }; A Ok() { return {}; } A NotOk() { throw "NotOk"; } struct B { A a1; A a2; }; void f(B) {} int main() { try { f({ Ok(), NotOk() […]

Obtenir la version Apple Clang et la version LLVM en amont correspondante

Je veux comprendre quelle version de clang Apple installée dans mon macbook, pour voir avec les fonctionnalités c ++ 11 et / ou c ++ 14 sont disponibles. J’ai tapé cette commande: clang –version //—-response Apple LLVM version 7.0.0 (clang-700.1.76) Target: x86_64-apple-darwin15.0.0 Thread model: posix Mais je ne suis pas capable de comprendre ce que […]

Pourquoi n’existe-t-il pas std :: ssortingngstream :: ssortingngstream (std :: ssortingng &&)?

J’espérais que ssortingngstream avait un constructeur qui vole son contenu initial d’une ssortingng&& . De telles “mutations constructeurs” inter-espèces n’existent-elles généralement pas dans le TSL? Si non, pourquoi pas?