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
¿Es este un antiguo constructor de estilo C ++?
Aquí una pieza de código C ++. En este ejemplo, muchos bloques de código parecen llamadas de constructor. Desafortunadamente, el código de bloqueo n. ° 3 no lo es (puede verificarlo usando https://godbolt.org/z/q3rsxn y https://cppinsights.io ). Creo que es una notación antigua de C ++ y podría explicar la introducción …
17 c++  c++11 


1
¿Es correcto Clang para rechazar el código en el que la clase anidada de una plantilla de clase se define solo a través de especializaciones?
Dada la siguiente plantilla de clase: template<typename T> struct Outer { struct Inner; auto f(Inner) -> void; }; Definimos Innerpor separado para cada especialización de Outer: template<> struct Outer<int>::Inner {}; template<> struct Outer<double>::Inner {}; y luego defina la función miembro funa vez para todas las especializaciones de Outer: auto Outer<T>::f(Inner) …


3
¿Hay alguna forma de instalar Valgrind en Catalina?
¿Hay alguna manera de instalar Valgrind en Catalina y hacer que se ejecute correctamente? Si es así, agradecería mucho un proceso paso a paso. Intenté instalar Valgrind con https://github.com/sowson/valgrind pero cuando probé helloWorld.cppen el terminal, la consola devolvió errores que no debería haber obtenido. No estoy seguro si cometí un …

2
Plantillas de sobrecarga ambiguas
Tengo el siguiente código con plantilla #include <vector> #include <array> #include <iostream> template<typename T1> void foo(std::vector<T1> bar) { std::cout << "GENERIC" << std::endl; } template<typename T1> void foo(std::vector<std::vector<T1>> bar) { std::cout << "SPECIFIC (vector)" << std::endl; } template<typename T1, int SIZE> void foo(std::vector<std::array<T1, SIZE>> bar) { std::cout << "SPECIFIC (array)" …
16 c++  templates 



1
std :: pair <auto, auto> tipo de retorno
Estaba jugando con autoadentro std::pair. En el siguiente código, fse supone que la función devuelve una std::pairde los tipos que dependen de un parámetro de plantilla. Un ejemplo de trabajo: EJEMPLO 1 template &lt;unsigned S&gt; auto f() { if constexpr (S == 1) return std::pair{1, 2}; // pair of ints …

2
¿Std :: set almacena objetos contiguos en la memoria?
¿ std::setAlmacena objetos en memoria contigua como std::vector? No he podido encontrar esto en la web, cppreference no menciona detalles sobre la asignación de memoria. Pero no puedo ver por qué no podría usar memoria contigua, de ahí mi pregunta.
16 c++  set  stdset 

1
¿Puede sizeof (enum) diferir de sizeof (std :: subyacente_tipo <Enum> :: type)?
Recientemente apareció en una revisión de código que en el siguiente ejemplo: enum class A : uint8_t { VAL1, VAL2 }; ... std::vector&lt;A&gt; vOfA; // Assume this is sized and full of some stuff. std::memcpy(wire_buffer, vOfA.data(), vOfA.size() * sizeof(A)); Deberíamos estar usando en sizeof(std::underlying_type&lt;A&gt;::type)lugar de sizeof(A). ¿Es posible que estos …


3
Plantillas variables: desplegar argumentos en grupos
Tengo una función que toma dos argumentos: template &lt;typename T1, typename T2&gt; void foo(T1 arg1, T2 arg2) { std::cout &lt;&lt; arg1 &lt;&lt; " + " &lt;&lt; arg2 &lt;&lt; '\n'; } Y una variable que debe reenviar sus argumentos en pares: template &lt;typename... Args&gt; void bar(Args&amp;&amp;... args) { static_assert(sizeof...(Args) % 2 …

3
¿Por qué no se llama al destructor en el operador delete?
Traté de llamar ::deletepara una clase en el operator deletemismo. Pero el destructor no se llama. Definí una clase MyClassque operator deleteha sido sobrecargada. Lo global operator deletetambién está sobrecargado. El sobrecargado operator deletede MyClassllamará al global sobrecargado operator delete. class MyClass { public: MyClass() { printf("Constructing MyClass...\n"); } virtual …


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.