Resultados de la búsqueda a petición "c++17"
¿Es un comportamiento indefinido `reinterpret_cast` a` T * `a` T (*) [N] `?
Considere el siguiente escenario: std::array<int, 8> a; auto p = reinterpret_cast<int(*)[8]>(a.data()); (*p)[0] = 42;Es estocomportamiento indefinido? Creo que es. a.data() devuelve unint*, que no es lo mismo queint(*)[8] losreglas de alias de ...
Deducir el primer argumento de plantilla con otros parámetros de plantilla predeterminados
Gcc y clang parecen estar en desacuerdo sobre si este código debe compilarse o no: #include <type_traits> template <typename Signature, int N = 0> struct MyDelegate { }; template <typename D> struct signature_traits; template <template ...
¿Un puntero con la dirección y el tipo correctos sigue siendo siempre un puntero válido desde C ++ 17?
(En referencia aesta pregunta y respuesta [https://stackoverflow.com/questions/48058545/are-there-any-guarantees-for-unions-that-contain-a-wrapped-type-and-the-type-its/48060029#48060029] .) Antes del estándar C ++ 17, la siguiente oración se ...
std :: make_shared () cambio en C ++ 17
Encppref [http://en.cppreference.com/w/cpp/memory/shared_ptr/make_shared], lo siguiente se mantiene hasta C ++ 17: código comof(std::shared_ptr<int>(new int(42)), g()) puede causar una pérdida de memoria sig se llama despuésnew int(42) y lanza ...
¿C ++ 17 prohíbe la elisión de copia en un caso donde C ++ 14 lo permitió?
Considera lo siguiente: struct X { X() {} X(X&&) { puts("move"); } }; X x = X();En C ++ 14, el movimiento podría eludirse a pesar de que el constructor del movimiento tiene efectos secundarios gracias a [class.copy] / 31, Esta elisión de ...
Uso de std :: launder para "validar" el valor del puntero no "puntero al objeto" desde C ++ 17
De acuerdo a estoresponder [https://stackoverflow.com/a/48062531/5632316], desde C ++ 17, incluso si un puntero tiene la dirección correcta y el tipo correcto de desreferenciación puede causarcomportamiento indefinido. alignas(int) unsigned char ...
constructor opcional con initializer_list
¿Cuál es el propósito de este constructor especial que toma la lista de inicializadores? ¿Alguien puede dar un ejemplo de cuándo esto será útil? template <class U, class... Args> constexpr explicit optional(in_place_t, initializer_list<U> il, ...
Doblar expresiones con arbitrario invocable?
Mirando por encima del C ++ 17papel [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4191.html]en pliegues, (y encppreference [http://en.cppreference.com/w/cpp/language/fold]), Estoy confundido sobre por qué se tomó la decisión de ...
Comportamiento indefinido en el uso repetido del operador prefijo ++
Leo estoresponder [https://stackoverflow.com/a/4176333/6935629]sobre comportamiento indefinido, donde vi la siguiente declaración: ++++++i; // UB, parsed as (++(++(++i)))No creo que sea un comportamiento indefinido. Tengo una duda, ¿es realmente ...
¿Puedo usar el resultado de un operador de conversión lambda constexpr sin captura de C ++ 17 como un argumento sin tipo de plantilla de puntero de función?
Mientras contesta¿Cómo escribo una expresión lambda que se parece a un método? [https://stackoverflow.com/questions/47604606/how-do-i-write-a-lambda-expression-that-looks-like-a-method] , Intenté convertir una lambda sin captura en un puntero de ...