Preguntas etiquetadas con c++

C ++ es un lenguaje de programación de propósito general. Originalmente fue diseñado como una extensión de C y tiene una sintaxis similar, pero ahora es un lenguaje completamente diferente. Use esta etiqueta para preguntas sobre el código (que se compilará) con un compilador de C ++. Utilice una etiqueta específica de la versión para preguntas relacionadas con una revisión estándar específica [C ++ 11], [C ++ 14], [C ++ 17] o [C ++ 20], etc.



2
¿El operador std :: unordered_map [] realiza una inicialización cero para la clave no existente?
Según cppreference.com, std::map::operator[]para el valor no existente, la inicialización cero. Sin embargo, el mismo sitio no menciona la inicialización cero para std::unordered_map::operator[], excepto que tiene un ejemplo que se basa en esto. Por supuesto, este es solo un sitio de referencia, no el estándar. Entonces, ¿el código a continuación está …

2
Inicializadores designados en C ++ 20
Tengo una pregunta sobre una de las características de c ++ 20, inicializadores designados (más información sobre esta característica aquí ) #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 << …


3
¿Cuál es el caso de uso para explícito (bool)
C ++ 20 introdujo explícito (bool) que selecciona condicionalmente en tiempo de compilación si un constructor se hace explícito o no. A continuación se muestra un ejemplo que encontré aquí . 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
¿Por qué `decltype (static_cast <T> (...))` no siempre es `T`?
Para el siguiente código, todos, excepto la última aserción, pasan: 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 } ¿Por qué esta última afirmación falla y …
24 c++  static-cast 

3
Conceptos de C ++ 20: ¿Qué especialización de plantilla se elige cuando el argumento de plantilla califica para múltiples conceptos?
Dado: #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; w; …

2
¿Por qué esta función de plantilla no se comporta como se esperaba?
Estaba leyendo sobre las funciones de plantilla y me confundí con este problema: #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() { f(1.0); …



3
Diferencia de comportamiento de la captura mutable de la función lambda a partir de una referencia a la variable global
Descubrí que los resultados son diferentes entre los compiladores si uso un lambda para capturar una referencia a una variable global con una palabra clave mutable y luego modifico el valor en la función lambda. #include &lt;stdio.h&gt; #include &lt;functional&gt; int n = 100; std::function&lt;int()&gt; f() { int &amp;m = n; …



Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.