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
Sort () no calificado: ¿por qué se compila cuando se usa en std :: vector y no en std :: array, y qué compilador es correcto?
Al llamar std::sort()a un std::array: #include <vector> #include <array> #include <algorithm> int main() { std::vector<int> foo{4, 1, 2, 3}; sort(begin(foo), end(foo)); std::array<int, 4> foo2{4, 1, 2, 3}; sort(begin(foo2), end(foo2)); } Tanto gcc como clang devuelven un error en el tipo en el std::array- dice clang error: uso del identificador no …
11 c++  c++17 


6
Rango inocente basado en bucle que no funciona
Lo siguiente no compila: #include <iostream> int main() { int a{},b{},c{},d{}; for (auto& s : {a, b, c, d}) { s = 1; } std::cout << a << std::endl; return 0; } Pruébalo en godbolt El error del compilador es: error: assignment of read-only reference 's' Ahora, en mi caso …


3
¿Puedo usar std :: transform en su lugar con una política de ejecución paralela?
Si no me equivoco, puedo hacer que std::transformfuncione en su lugar usando el mismo rango que un iterador de entrada y salida. Supongamos que tengo algún std::vectorobjeto vec, entonces escribiría std::transform(vec.cbegin(),vec.cend(),vec.begin(),unary_op) utilizando una operación unaria adecuada unary_op. Usando el estándar C ++ 17, me gustaría ejecutar la transformación en paralelo …

1
Problema en GCC / C ++ 17 con la clase de plantilla de plantilla
Considere las 2 siguientes sobrecargas template<typename T> bool test() { return true; } template<template<typename ...> class T> bool test() { return false; } El primero funciona para clases regulares, mientras que el segundo funciona para plantillas que no se instancian. Por ejemplo: std::cout<<test<int>()<<std::endl; <-- this yields 1 std::cout<<test<std::list>()<<std::endl; <--this yields …
10 c++  templates  gcc  clang  c++17 




2
¿Cómo evitar la copia al encadenar?
Estoy creando una clase de tipo encadenamiento, como el pequeño ejemplo a continuación. Parece que al encadenar funciones miembro, se invoca el constructor de copia. ¿Hay alguna forma de deshacerse de la llamada al constructor de la copia? En mi ejemplo de juguete a continuación, es obvio que solo estoy …
10 c++  c++14  c++17 


2
Sintaxis válida de llamar al pseudodestructor para una constante flotante
Considere el siguiente programa demostrativo. #include <iostream> int main() { typedef float T; 0.f.T::~T(); } Este programa está compilado por Microsoft Visual Studio Community 2019. Pero clangy gccemitir un error como este prog.cc:7:5: error: unable to find numeric literal operator 'operator""f.T' 7 | 0.f.T::~T(); | ^~~~~ Si escribir la expresión …



1
Especialización std :: allocator proporcionada por el usuario
Las plantillas de clase en el ::stdespacio de nombres generalmente pueden estar especializadas por programas para tipos definidos por el usuario. No encontré ninguna excepción a esta regla para std::allocator. Entonces, ¿tengo permitido especializarme std::allocatorpara mis propios tipos? Y si se me permite, ¿debo proporcionar todos los miembros de std::allocatorla …
8 c++  c++17  allocator 

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.