Articles of c ++ 11

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

Tabla de búsqueda con constexpr

Estoy buscando crear una tabla de coordenadas de búsqueda, algo así como: int a[n][2] = {{0,1},{2,3}, … } Para un n dado, se creará en tiempo de comstackción. Empecé a buscar en constexpr , pero parece una función que devuelve un constexpr std::vector<std::array > no es una opción, como lo consigo: invalid return type ‘std::vector<std::array […]

La lista de inicializadores C ++ 11 falla, pero solo en listas de longitud 2

¡Localicé un oscuro error de registro al hecho de que las listas de inicializadores de longitud 2 parecen ser un caso especial! ¿Cómo es esto posible? El código fue comstackdo con Apple LLVM versión 5.1 (clang-503.0.40), usando CXXFLAGS=-std=c++11 -stdlib=libc++ . #include #include #include using namespace std; typedef vector Strings; void print(string const& s) { printf(s.c_str()); […]