Preguntas etiquetadas con c++17

543
Reglas de invalidación de iterador

¿Cuáles son las reglas de invalidación de iterador para contenedores C ++? Preferiblemente en un formato de lista de resumen. (Nota: Esto está destinado a ser una entrada a las preguntas frecuentes de C ++ de Stack Overflow . Si desea criticar la idea de proporcionar preguntas frecuentes en este...

242
¿Cuál es el propósito de std :: launder?

P0137 presenta la plantilla de función std::laundery realiza muchos, muchos cambios al estándar en las secciones relativas a uniones, vida útil y punteros. ¿Cuál es el problema que este documento está resolviendo? ¿Cuáles son los cambios en el idioma que debo tener en cuenta? ¿Y qué estamos...

186
Lo que hizo i = i ++ + 1; legal en C ++ 17?

Antes de comenzar a gritar comportamiento indefinido, esto se enumera explícitamente en N4659 (C ++ 17) i = i++ + 1; // the value of i is incremented Sin embargo, en N3337 (C ++ 11) i = i++ + 1; // the behavior is undefined ¿Qué cambió? De lo que puedo reunir, de [N4659 basic.exec]...

162
¿Qué es string_view?

string_viewera una característica propuesta dentro de C ++ Library Fundamentals TS ( N3921 ) agregada a C ++ 17 Según tengo entendido, es un tipo que representa algún tipo de "concepto" de cadena que es una vista de cualquier tipo de contenedor que podría almacenar algo visible como una...

137
La forma más elegante de escribir un 'si'

Desde C ++ 17 se puede escribir un ifbloque que se ejecutará exactamente una vez como esta: #include <iostream> int main() { for (unsigned i = 0; i < 10; ++i) { if (static bool do_once = true; do_once) { // Enter only once std::cout << "hello one-shot" << std::endl; //...

124
¿Cómo funcionan las variables en línea?

En la reunión de estándares 2016 de Oulu ISO C ++, el comité de estándares votó una propuesta llamada Variables en línea en C ++ 17. En términos simples, ¿qué son las variables en línea, cómo funcionan y para qué sirven? ¿Cómo deben declararse, definirse y utilizarse las variables en...

124
Lambda regresa: ¿es esto legal?

Considere este programa bastante inútil: #include <iostream> int main(int argc, char* argv[]) { int a = 5; auto it = [&](auto self) { return [&](auto b) { std::cout << (a + b) << std::endl; return self(self); }; }; it(it)(4)(6)(42)(77)(999); } Básicamente...

122
polymorphic_allocator: ¿cuándo y por qué debería usarlo?

Aquí está la documentación sobre cppreference , aquí está el borrador de trabajo. Debo admitir que no entendí cuál es el propósito real polymorphic_allocatory cuándo / por qué / cómo debería usarlo. Como ejemplo, pmr::vectortiene la siguiente firma: namespace pmr { template <class T>...

96
¿Por qué usar std :: make_unique en C ++ 17?

Por lo que tengo entendido, C ++ 14 se introdujo std::make_uniqueporque, como resultado de que no se especificaba el orden de evaluación de parámetros, esto no era seguro: f(std::unique_ptr<MyClass>(new MyClass(param)), g()); // Syntax A (Explicación: si la evaluación primero asigna la...

95
experimental :: error del enlazador del sistema de archivos

Intento usar las nuevas funciones de c ++ 1z en la cabeza del desarrollo dentro de gcc 6.0. Si pruebo este pequeño ejemplo: #include <iostream> #include <experimental/filesystem> namespace fs = std::experimental::filesystem; int main() { fs::path p1 = "/home/pete/checkit";...

89
¿Cómo funciona la elisión de copia garantizada?

En la reunión de estándares ISO C ++ de Oulu de 2016, el comité de estándares votó en C ++ 17 una propuesta llamada elisión de copia garantizada a través de categorías de valor simplificadas . ¿Cómo funciona exactamente la elisión de copia garantizada? ¿Cubre algunos casos en los que ya se...