Articles of c ++ 11

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. […]

C ++ 0x captura lambda por valor siempre const?

¿Hay alguna manera de capturar por valor y hacer que el valor capturado no const? Tengo un functor de biblioteca que me gustaría capturar y llamar a un método que no es const pero debería serlo. Lo siguiente no comstack pero haciendo que foo :: operator () lo arregle. struct foo { bool operator () […]

Desactivar errores de eclipse (que no son realmente errores)

Posible duplicado: Deshabilitar el descubrimiento de errores de Eclipse. (Codan falsos positivos) Con compatibilidad GCC 4.8 / Clang 3.3 C ++ tan por delante de lo que Eclipse está haciendo con la comprobación de syntax (en términos de soporte de características), Eclipse marca muchas cosas como errores que son códigos realmente válidos (el alias de […]

En C ++, ¿qué categorías (lvalue, rvalue, xvalue, etc.) pueden tener las expresiones que producen temporarios de tipo de clase?

Aquí hay un código de ejemplo: #include class Foo { public: explicit Foo(int x) : data(x) {}; Foo& operator++() { data += 1; return *this; } void *get_addr() { return (void*)this; } friend Foo operator + (const Foo& lhs, const Foo& rhs); friend std::ostream& operator << (std::ostream& os, const Foo& f); private: int data; }; […]

C + + Threads, std :: system_error – ¿operación no permitida?

Así que escribí un progtwig para probar los hilos en 64 bit kubuntu linux, versión 13.04. En realidad, robé el código a otra persona que estaba escribiendo un progtwig de prueba. #include #include #include void task1(const std::string msg) { std::cout << "task1 says: " << msg << std::endl; } int main(int argc, char **argv) { […]

Orden de evaluación de los elementos en la inicialización de la lista

En el otro tema , @Dietmar dio esta solución: template std::tuple parse(std::istream& in) { return std::tuple{ T(in)… }; } declarando que, El uso de la inicialización de llaves funciona porque el orden de evaluación de los argumentos en una lista de inicializadores de llaves es el orden en que aparecen . (enfatiza el mío) El […]

los valores r no pertenecientes a la clase siempre tienen tipos cv no calificados

La §3.10 sección 9 dice “los valores r no pertenecientes a la clase siempre tienen tipos cv no calificados”. Eso me hizo preguntarme … int foo() { return 5; } const int bar() { return 5; } void pass_int(int&& i) { std::cout << "rvalue\n"; } void pass_int(const int&& i) { std::cout << "const rvalue\n"; } […]