Articles of c ++ 11

¿Cuál es la categoría de valor de los operandos de los operadores de C ++ cuando no se especifica?

PREMISA: El estándar C ++ 11 clasifica las expresiones en tres categorías de valores disjuntas: lvalues , xvalues y prvalues (§ 3.10 / 1). Una explicación de qué categorías de valores está disponible, por ejemplo, aquí . Estoy luchando para averiguar cuáles son los requisitos de los diferentes operadores en la categoría de valor de […]

¿Qué proporciona “ y dónde está documentado?

El nuevo estándar C ++ 11 menciona un encabezado , presumiblemente en analogía a C99 . Ahora, sabemos que C ++ 11 trae nuevos tipos de caracteres y literales que están específicamente diseñados para UTF16 y UTF32, pero no creo que el lenguaje en realidad contenga funciones para convertir la encoding de multibyte estrecha (dependiente […]

Visual Studio 2012 __cplusplus y C ++ 11

Alguien sabe por qué __cplusplus se define como 199711L (que es el “viejo” C ++) en mi proyecto Visual Studio 2012 c ++? ¿No 201103L decir 201103L ya que VS 2012 ahora tiene compatibilidad con C ++ 11? Incluso si incluyo encabezados C ++ 11, aún está mal definido. ¿Alguna pista?

¿Puede devolver una variable local por valor en C ++ 11/14, lo que da como resultado que el valor de retorno se construya con rvalue cuando no se trata de copiar / mover?

Sé que en la siguiente situación el comstackdor es libre de moverse: construye el valor de retorno de makeA (pero también puede eludir la copia o moverlo por completo): struct A { A(A&); A(A&&); }; A makeA() { A localA; return localA; } Lo que me pregunto es si el comstackdor puede construir un objeto […]

La lectura de ifstream no leerá el espacio en blanco

Estoy implementando un lexer personalizado en C ++ y cuando bash leer en espacios en blanco, el ifstream no lo leerá. Estoy leyendo carácter por carácter usando >> , y todo el espacio en blanco se ha ido. ¿Hay alguna manera de hacer que el ifstream mantenga todos los espacios en blanco y leerlo? Sé […]

¿Constexpr es compatible con funciones / expresiones lambda?

struct Test { static const int value = []() -> int { return 0; } (); }; Con gcc-4.6 me sale algo así como, error: function needs to be constexpr . He intentado varias combinaciones de poner constexpr en varios lugares, pero no constexpr suerte. ¿ constexpr compatible constexpr para funciones lambda (independientemente del tipo […]

std :: bind una función enlazada

Tengo problemas para detectar por qué diablos no está comstackndo. Tengo una función lambda que devuelve una std::function basada en algún argumento. He reducido mi problema a este fragmento (que no usa lambdas, pero reproduce mi error perfectamente): #include #include struct foo { template void bar(T data) { std::cout << data << "\n"; } }; […]

¿Se vuelve a contar std :: string en GCC 4.x / C ++ 11?

¿Es std::string referencia-contado cuando se usa gcc 4 con -std=c++0x o -std=c++11 ?

Sintaxis para referencias universales

Esta es una referencia de valor real: void foo(int&& a); No se une a lvalues: int i = 42; foo(i); // error Esta es una referencia universal: template void bar(T&& b); Se une a rvalues ​​y también se une a lvalues: bar(i); // okay Esta es una referencia de valor real: template struct X { […]

¿Cómo puedo expandir la llamada a las clases base de la plantilla variadic?

Tengo un conjunto de políticas no ortogonales, todas implementan un método conocido común, las políticas agregan controles de seguridad. Quiero que los usuarios puedan combinar las políticas para permitir una validación más compleja sin crear políticas para cada caso de combinación a mano. Mi enfoque es crear una nueva clase de política para combinar otras. […]