Articles of c ++ 11

initializer_list y tipo de plantilla deducción

Considera la función: template void printme(T&& t) { for (auto i : t) std::cout << i; } o cualquier otra función que espere un parámetro con un tipo begin () / end () – enabled. ¿Por qué es ilegal lo siguiente? printme({‘a’, ‘b’, ‘c’}); Cuando todos estos son legítimos: printme(std::vector({‘a’, ‘b’, ‘c’})); printme(std::string(“abc”)); printme(std::array {‘a’, […]

¿Cómo llamar a una función en todos los argumentos de la plantilla variadic?

me gustaría hacer template void print(ArgTypes… Args) { print(Args)…; } Y que sea equivalente a esta cadena recursiva bastante voluminosa: template void print(const T& t, ArgTypes… Args) { print(t); print(Args…); } seguido por especializaciones explícitas de un solo parámetro para cada tipo que me gustaría imprimir. El “problema” con la implementación recursiva es que se […]

¿Puedo usar C ++ 11 con Xcode?

Estoy considerando el uso de algunas características de C ++ 11 (como auto por ejemplo) en algunos proyectos multiplataforma (Windows + Mac). En Windows, Visual Studio admite partes del próximo estándar C ++ 11 que me permitiría simplificar partes de la base de código, así que, naturalmente, me interesaría comenzar a utilizar estas características. Pero […]

¿Cómo usar el bucle for () basado en rangos con std :: map?

El ejemplo común para C ++ 11 basado en el rango para () loops es siempre algo simple como esto: std::vector numbers = { 1, 2, 3, 4, 5, 6, 7 }; for ( auto xyz : numbers ) { std::cout << xyz << std::endl; } En cuyo caso xyz es un int . Pero, […]

¿Cómo comprobar si un hilo std :: todavía se está ejecutando?

¿Cómo puedo verificar si un std::thread todavía se está ejecutando (de una manera independiente de la plataforma)? Carece de un método timed_join() y joinable() no está destinado para eso. Pensé en bloquear un mutex con std::lock_guard en el hilo y usar el método try_lock() del mutex para determinar si todavía está bloqueado (el hilo se […]

¿Diferencia entre el paréntesis angular y las comillas dobles “” al incluir archivos de encabezado en C ++?

Posible duplicado: ¿Cuál es la diferencia entre #include y #include “filename”? ¿Cuál es la diferencia entre el corchete angular y las comillas dobles ” ” al incluir archivos de cabecera en C ++? Me refiero a qué archivos se supone que deben incluirse usando, por ejemplo: #include y qué archivos se van a incluir usando, […]

¿Cómo habilitar C ++ 11 en Qt Creator?

El título es bastante autodescriptivo. Descargué Qt Creator 2.7.0 y estoy intentando comstackr algunos códigos básicos de C ++ 11: int my_array[5] = {1, 2, 3, 4, 5}; for(int &x : my_array) { x *= 2; } Recibo el siguiente error: range based for loops are not allowed in c++ 98 mode Sin embargo, según […]

C ++ 11 forzado de rango inverso

¿Hay algún adaptador de contenedor que invierta la dirección de los iteradores para que pueda iterar sobre un contenedor en reversa con for-loop basado en rangos? Con iteradores explícitos, yo convertiría esto: for (auto i = c.begin(); i != c.end(); ++i) { … dentro de esto: for (auto i = c.rbegin(); i != c.rend(); ++i) […]

¿Cadena :: c_str () ya no es nulo terminado en C ++ 11?

En C ++ 11 basic_string::c_str se define exactamente igual que basic_string::data , que a su vez se define como exactamente igual a *(begin() + n) y *(&*begin() + n) (cuando 0 <= n < size() ). No puedo encontrar nada que requiera que la cadena siempre tenga un carácter nulo en su extremo. ¿Esto significa […]

¿Por qué C ++ no tiene un recolector de basura?

No estoy haciendo esta pregunta debido a los méritos de la recolección de basura antes que nada. Mi principal razón para preguntar esto es que sí sé que Bjarne Stroustrup ha dicho que C ++ tendrá un recolector de basura en algún momento. Dicho esto, ¿por qué no se ha agregado? Ya hay algunos recolectores […]