Articles of c ++ 11

¿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"; } […]

Semántica “auto” de C ++ 11

Cuando uso C ++ 11 auto , ¿cuáles son las reglas de tipo de deducción con respecto a si se resolverá con un valor o una referencia? Por ejemplo, a veces está claro: auto i = v.begin(); // Copy, begin() returns an iterator by value Estos son menos claros: const std::shared_ptr& get_foo(); auto p = […]

😃 (y otros caracteres Unicode) en identificadores no permitidos por g ++

Estoy 😞 para encontrar que no puedo usar 😃 como un identificador válido con g ++ 4.7, incluso con la opción -fextended-identifiers habilitada: int main(int argc, const char* argv[]) { const char* 😃 = “I’m very happy”; return 0; } main.cpp: 3: 3: error: extraviar ‘\ 360’ en el progtwig main.cpp: 3: 3: error: extraviar […]

C ++ 11 – static_assert dentro de la función constexpr?

¿Cómo se podría hacer correctamente un static_assert dentro de una función constexpr ? Por ejemplo: constexpr int do_something(int x) { static_assert(x > 0, “x must be > 0”); return x + 5; } Este no es un código válido de C ++ 11, porque una función constexpr solo debe contener una statement de retorno. No […]