Articles of c ++ 11

¿Qué es decltype con dos argumentos?

Editar, para evitar confusiones: decltype no acepta dos argumentos. Ver respuestas. Las siguientes dos estructuras pueden usarse para verificar la existencia de una función miembro en un tipo T durante el tiempo de comstackción: // Non-templated helper struct: struct _test_has_foo { template static auto test(T* p) -> decltype(p->foo(), std::true_type()); template static auto test(…) -> std::false_type; […]

¿Este error C ++ 11 regex me o el comstackdor?

OK, este no es el progtwig original en el que tuve este problema, pero lo dupliqué en uno mucho más pequeño. Problema muy simple. main.cpp: #include #include using namespace std; int main() { regex r1(“S”); printf(“S works.\n”); regex r2(“.”); printf(“. works.\n”); regex r3(“.+”); printf(“.+ works.\n”); regex r4(“[0-9]”); printf(“[0-9] works.\n”); return 0; } Comstackdo con éxito […]

¿Es necesario utilizar una matriz de constexto cuando se suscribe?

Dado el siguiente código: struct A { static constexpr int a[3] = {1,2,3}; }; int main () { int a = A::a[0]; int b [A::a[1]]; } es A::a necesariamente utilizado en int a = A::a[0] ? Nota: Esta pregunta representa una versión menos llamativa / ilógica / interminable de un debate en el Salón .

Inferir la firma de llamada de una lambda o arbitraria invocable para “make_function”

En algunas situaciones es deseable poder escribir y borrar un llamable (por ejemplo, función, puntero de función, instancia de objeto con operator() , lambda, mem_fn ), por ejemplo, en el uso de adaptadores Boost con C ++ 11 lambdas donde una copia asignable y se requiere un tipo construible por defecto. std::function sería ideal, pero […]

¿Puede std :: vector hacer uso de la optimización del pequeño buffer?

Me preguntaba con mi colega hoy si std :: vector puede implementarse para hacer uso de la optimización de búfer pequeño. Al observar el borrador de C ++ 11, leo en 23.3.1p8 La expresión a.swap (b), para los contenedores ayb de un tipo de contenedor estándar distinto de una matriz, intercambiará los valores de ayb […]

std :: vector, construcción por defecto, C ++ 11 y cambios de rotura

Hoy corrí contra un tema bastante sutil sobre el que me gustaría opinar. Considere la siguiente clase de lenguaje compartido de cuerpo compartido: struct S { S() : p_impl(new impl) {} private: struct impl; boost::shared_ptr p_impl; }; La diversión aparece cuando tratas de ponerlos en vectores de la siguiente manera: std::vector v(42); Ahora, con MSVC […]

¿No es innecesario el modificador const?

El ítem 3 ” Effective C ++ ” dice “Use const siempre que sea posible”, y da un ejemplo como: const Rational operator*(const Rational& lhs, const Rational& rhs); para evitar que los clientes puedan cometer atrocidades como esta: Rational a, b, c; … (a * b) = c; // invoke operator= on the result of […]

¿Qué implementaciones std :: async usan grupos de hilos?

Se supone que una de las ventajas de usar std::async lugar de crear manualmente objetos std::thread es que std::async puede usar pools de hilos bajo las cubiertas para evitar problemas de sobresuscripción. Pero, ¿qué implementaciones hacen esto? Según tengo entendido, la implementación de Microsoft sí lo hace, pero ¿qué hay de estas otras implementaciones async […]

Reducir las conversiones en C ++ 0x. ¿Soy solo yo, o suena esto como un cambio radical?

C ++ 0x va a hacer que el siguiente código y el código similar estén mal formados, porque requiere una llamada conversión de estrechamiento de un double a un int . int a[] = { 1.0 }; Me pregunto si este tipo de inicialización se usa mucho en el código del mundo real. ¿Cuántas claves […]

¿Cómo inicializo una matriz miembro con una initializer_list?

Me estoy poniendo al día con C ++ 0x y estoy probando cosas con g ++ 4.6 Acabo de probar el siguiente código, pensando que funcionaría, pero no comstack. Me sale el error: incompatible types in assignment of ‘std::initializer_list’ to ‘const int [2]’ struct Foo { int const data[2]; Foo(std::initializer_list& ini) : data(ini) {} }; […]