Preguntas etiquetadas con c++20

C ++ 20 es el objetivo de la versión de C ++ después de C ++ 17. Esta etiqueta debe usarse (junto con la etiqueta de C ++) para preguntas sobre las características de C ++ en camino para C ++ 20.

3
std :: bit_cast con std :: array
En su reciente charla "Punking de tipo en C ++ moderno", Timur Doumler dijo que std::bit_castno se puede usar para convertir un bit floaten un unsigned char[4]porque las matrices de estilo C no se pueden devolver de una función. Deberíamos usar std::memcpyo esperar hasta C ++ 23 (o posterior) cuando …


1
¿Igualdad_comparable_con` necesita requerir `common_reference`?
El conceptoequality_­comparable_with<T, U> tiene la intención de declarar que los objetos de tipo Ty Use pueden comparar iguales entre sí, y si lo son, entonces esto tiene el significado esperado. Esta bien. Sin embargo, este concepto también requiere common_reference_t<T&, U&>existir. El ímpetu principal common_referencey la funcionalidad que lo acompaña parecen …

1
Definición de C ++ 20 fuera de clase en una clase de plantilla
Hasta el estándar C ++ 20 de C ++, cuando queríamos definir un operador fuera de clase que usara algunos miembros privados de una clase de plantilla, usaríamos una construcción similar a esta: template <typename T> class Foo; template <typename T> constexpr bool operator==(T lhs, const Foo<T>& rhs); template <typename …
12 c++  templates  c++20 




2
Pasar un concepto a una función
Dado que los conceptos se definen como predicados en tiempo de compilación, ¿también es posible reutilizar estos predicados para algoritmos en tiempo de compilación? Por ejemplo, ¿sería posible verificar si todos los tipos de una tupla se ajustan a un concepto? Por lo que he visto, no es posible pasar …


4
¿Cambio de ruptura en C ++ 20 o regresión en clang-trunk / gcc-trunk cuando se sobrecarga la comparación de igualdad con el valor de retorno no booleano?
El siguiente código se compila bien con clang-trunk en el modo c ++ 17 pero se rompe en el modo c ++ 2a (próximo c ++ 20): // Meta struct describing the result of a comparison struct Meta {}; struct Foo { Meta operator==(const Foo&) {return Meta{};} Meta operator!=(const Foo&) …

1
Puede abarcar ser constexpr?
Todos los constructores de std :: span se declaran constexpr, sin embargo, parece que no puedo hacer que ninguno de ellos funcione en un contexto constexpr. Descomentar cualquiera de los constexpr a continuación dará como resultado un error de compilación. #include <array> #include <span> int main() { constexpr int carray[3] …
11 c++  constexpr  c++20 


1
¿Por qué std :: span carece de operadores de comparación?
¿No fue std::spandiseñado como una referencia ligera para subregiones de std::vector/ std::array/ matriz simple y similares? ¿No debería contener también operadores de comparación en su API, para ser coherentes con ellos? ¿Cuál fue el razonamiento detrás de la exclusión? Nota: los operadores de comparación, es decir, ya sea el conjunto …
10 c++  std  c++20  std-span 

1
¿Podremos construir contenedores con vistas en C ++ 20?
Los rangos están llegando a C ++ con la versión estándar C ++ 20. Mi pregunta: ¿podremos construir contenedores de biblioteca estándar (existentes) con algún rango? Y lo más importante, ¿con vistas de rango? Por ejemplo, esto: #include <vector> #include <iostream> #include <ranges> int main() { auto sq = [](int …
10 c++  c++20  range-v3 


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.