Questions marquées «c++»

C ++ est un langage de programmation à usage général. Il a été initialement conçu comme une extension de C et a une syntaxe similaire, mais c'est maintenant un langage complètement différent. Utilisez cette balise pour les questions sur le code (à compiler) avec un compilateur C ++. Utilisez une balise spécifique à la version pour les questions liées à une révision standard spécifique [C ++ 11], [C ++ 14], [C ++ 17] ou [C ++ 20], etc.



4
Conteneur STL avec un type spécifique comme argument générique
Existe-t-il un moyen de créer une fonction qui prend un conteneur avec un type spécifique (disons std::string) comme paramètre void foo(const std::container<std::string> &cont) { for(std::string val: cont) { std::cout << val << std::endl; } } et l'appeler pour chaque type de conteneur stl en entrée? comme ci-dessus? std::set<std::string> strset; std::vector<std::string> …


2
Initialiseurs désignés en C ++ 20
J'ai une question sur l'une des fonctionnalités c ++ 20, les initialiseurs désignés (plus d'informations sur cette fonctionnalité ici ) #include <iostream> constexpr unsigned DEFAULT_SALARY {10000}; struct Person { std::string name{}; std::string surname{}; unsigned age{}; }; struct Employee : Person { unsigned salary{DEFAULT_SALARY}; }; int main() { std::cout << std::boolalpha …

2
L'opérateur std :: unordered_map [] effectue-t-il une initialisation à zéro pour une clé non existante?
Selon cppreference.com, std::map::operator[]pour une valeur non existante, l'initialisation à zéro est effectuée. Cependant, le même site ne mentionne pas l'initialisation zéro pour std::unordered_map::operator[], sauf qu'il a un exemple qui s'appuie sur cela. Bien sûr, ce n'est qu'un site de référence, pas la norme. Alors, le code ci-dessous est-il correct ou …


3
quel est le cas d'utilisation pour explicite (bool)
C ++ 20 a introduit explicit (bool) qui sélectionne conditionnellement au moment de la compilation si un constructeur est rendu explicite ou non. Voici un exemple que j'ai trouvé ici . 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 


1
Pourquoi `decltype (static_cast <T> (…))` n'est pas toujours `T`?
Pour le code suivant, toutes les assertions sauf la dernière passent: template&lt;typename T&gt; constexpr void assert_static_cast_identity() { using T_cast = decltype(static_cast&lt;T&gt;(std::declval&lt;T&gt;())); static_assert(std::is_same_v&lt;T_cast, T&gt;); } int main() { assert_static_cast_identity&lt;int&gt;(); assert_static_cast_identity&lt;int&amp;&gt;(); assert_static_cast_identity&lt;int&amp;&amp;&gt;(); // assert_static_cast_identity&lt;int(int)&gt;(); // illegal cast assert_static_cast_identity&lt;int (&amp;)(int)&gt;(); assert_static_cast_identity&lt;int (&amp;&amp;)(int)&gt;(); // static assert fails } Pourquoi cette dernière assertion échoue-t-elle et …
24 c++  static-cast 

3
Concepts C ++ 20: Quelle spécialisation de modèle est choisie lorsque l'argument de modèle se qualifie pour plusieurs concepts?
Donné : #include &lt;concepts&gt; #include &lt;iostream&gt; template&lt;class T&gt; struct wrapper; template&lt;std::signed_integral T&gt; struct wrapper&lt;T&gt; { wrapper() = default; void print() { std::cout &lt;&lt; "signed_integral" &lt;&lt; std::endl; } }; template&lt;std::integral T&gt; struct wrapper&lt;T&gt; { wrapper() = default; void print() { std::cout &lt;&lt; "integral" &lt;&lt; std::endl; } }; int main() { wrapper&lt;int&gt; …

2
Pourquoi ce modèle ne fonctionne-t-il pas comme prévu?
Je lisais sur les fonctions de modèle et je suis devenu confus par ce problème: #include &lt;iostream&gt; void f(int) { std::cout &lt;&lt; "f(int)\n"; } template&lt;typename T&gt; void g(T val) { std::cout &lt;&lt; typeid(val).name() &lt;&lt; " "; f(val); } void f(double) { std::cout &lt;&lt; "f(double)\n"; } template void g&lt;double&gt;(double); int main() …


3
Différence de comportement de la capture mutable de la fonction lambda d'une référence à une variable globale
J'ai trouvé que les résultats sont différents d'un compilateur à l'autre si j'utilise un lambda pour capturer une référence à une variable globale avec un mot clé mutable, puis modifie la valeur dans la fonction lambda. #include &lt;stdio.h&gt; #include &lt;functional&gt; int n = 100; std::function&lt;int()&gt; f() { int &amp;m = …


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.