Preguntas etiquetadas con c++17

C ++ 17 es el nombre del estándar C ++ aprobado en 2017. Se basa en el estándar C ++ 14 anterior, mejorando el lenguaje central y la biblioteca estándar, y agregando algunas características nuevas del lenguaje.


1
¿Es esto un error en std :: gcd?
Me he encontrado con este comportamiento std::gcdque encontré inesperado: #include <iostream> #include <numeric> int main() { int a = -120; unsigned b = 10; //both a and b are representable in type C using C = std::common_type<decltype(a), decltype(b)>::type; C ca = std::abs(a); C cb = b; std::cout << a << …


2
¿GCC9 evita el estado sin valor de std :: variant permitido?
Recientemente seguí una discusión de Reddit que condujo a una buena comparación de la std::visitoptimización entre los compiladores. Noté lo siguiente: https://godbolt.org/z/D2Q5ED Tanto GCC9 como Clang9 (supongo que comparten el mismo stdlib) no generan código para verificar y lanzar una excepción sin valor cuando todos los tipos cumplen algunas condiciones. …

1
¿Por qué std :: swap no funciona en elementos vectoriales <bool> en Clang / Win?
Tengo un código como este: #include &lt;vector&gt; #include &lt;utility&gt; int main() { std::vector&lt;bool&gt; vb{true, false}; std::swap(vb[0], vb[1]); } Argumentos sobre la cordura de vector&lt;bool&gt;un lado, esto estaba funcionando bien en: Clang para Mac Visual Studio para Windows GCC para Linux Luego intenté compilarlo con Clang en Windows y recibí el …

1
¿Puede el constructor de rango std :: vector invocar conversiones explícitas?
¿El siguiente programa está bien formado? #include &lt;vector&gt; struct A { explicit A(int) {} }; int main() { std::vector&lt;int&gt; vi = {1, 2, 3, 4, 5}; std::vector&lt;A&gt; va(vi.begin(), vi.end()); } Según C ++ 17 [secuencia.reqmts], el requisito para X u(i, j); donde Xes un contenedor de secuencia, es: Tserá EmplaceConstructibleen …
14 c++  c++17 

3
Sobrecargar una función lambda
¿Cómo sobrecargar una función lambda local simple? SSE del problema original: #include &lt;iostream&gt; #include &lt;map&gt; void read() { static std::string line; std::getline(std::cin, line); auto translate = [](int idx) { constexpr static int table[8]{ 7,6,5,4,3,2,1,0 }; return table[idx]; }; auto translate = [](char c) { std::map&lt;char, int&gt; table{ {'a', 0}, {'b', …

1
¿Cómo funciona la implementación de c ++ nullptr?
Tengo curiosidad por saber cómo nullptrfunciona. Las normas N4659 y N4849 dicen: tiene que tener tipo std::nullptr_t; no puedes tomar su dirección; se puede convertir directamente a un puntero y puntero a miembro; sizeof(std::nullptr_t) == sizeof(void*); su conversión a booles false; su valor se puede convertir a tipo integral de …



1
Operador ambiguo en gcc
Hice una plantilla de función para imprimir algunos de los contenedores stl #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;string&gt; template &lt;template &lt;typename, typename&gt; class C, typename T, typename A&gt; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const C&lt;T, A&gt;&amp; container) { for (auto&amp; elem : container) { os &lt;&lt; elem &lt;&lt; " "; } return …
13 c++  c++17 





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.