Articles of c ++ 11

¿Dónde está shared_ptr?

Estoy tan frustrado en este momento después de varias horas tratando de encontrar dónde se encuentra shared_ptr. Ninguno de los ejemplos que veo muestra el código completo para incluir los encabezados de shared_ptr (y de trabajo). ¡Simplemente indicar std , tr1 y no está ayudando en absoluto! ¡He descargado boosters y todo pero todavía no […]

C ++ termina llamada sin una excepción activa

Estoy obteniendo un error de C ++ con subprocesamiento: terminate called without an active exception Aborted Aquí está el código: #include #include #include #include template class blocking_stream { public: blocking_stream(size_t max_buffer_size_) : max_buffer_size(max_buffer_size_) { } //PUSH data into the buffer blocking_stream &operator<<(TYPE &other) { std::unique_lock mtx_lock(mtx); while(buffer.size()>=max_buffer_size) stop_if_full.wait(mtx_lock); buffer.push(std::move(other)); mtx_lock.unlock(); stop_if_empty.notify_one(); return *this; } //POP […]

Destructores virtuales C ++ 11 y generación automática de funciones especiales de movimiento

Las reglas para la generación automática de funciones de movimiento especiales (constructor y operador de asignación) en C ++ 11 especifican que no se puede declarar ningún destructor. La lógica es, presumiblemente, que si necesitas hacer algo especial en la destrucción, un movimiento puede no ser seguro. Sin embargo, para llamadas de destructor adecuadas en […]

¿Constexpr implica en línea?

Considere la siguiente función en línea: // Inline specifier version #include #include inline int f(const int x); inline int f(const int x) { return 2*x; } int main(int argc, char* argv[]) { return f(std::atoi(argv[1])); } y la versión equivalente constexpr: // Constexpr specifier version #include #include constexpr int f(const int x); constexpr int f(const int […]

¿Son las notas y ejemplos en la especificación del lenguaje central del Estándar C ++ no normativo?

A menudo, en SO (y en otros lugares) he visto la afirmación de que las notas y los ejemplos en el Estándar C ++ no son normativos; probablemente yo mismo lo he reclamado algunas veces. Sin embargo, no pude encontrar evidencia de este hecho en la especificación del lenguaje central del Estándar C ++ (en […]

Uso de adaptadores Boost con C ++ 11 lambdas

Traté de comstackr este código: #include #include #include int main() { std::vector v{ 1,5,4,2,8,5,3,7,9 }; std::cout << *boost::min_element(v | boost::adaptors::transformed( [](int i) { return -i; })) << std::endl; return 0; } La comstackción falló con el siguiente mensaje de error (después de una nueva instancia de plantilla larga): /usr/local/include/boost/iterator/transform_iterator.hpp:84:26: error: use of deleted function ‘main()::::()’ […]

Cómo pasar una función de plantilla en una lista de argumentos de plantilla

Supongamos que tengo una función de template : template T produce_5_function() { return T(5); } ¿Cómo puedo pasar esta template completa a otra template ? Si produce_5_function fue un funtor, no habría problema: template struct produce_5_functor { T operator()() const { return T(5); } }; template<templateclass F> struct client_template { int operator()() const { return […]

Múltiples problemas de “no se pudieron resolver” usando Eclipse con minGW

Recientemente instalé (las últimas versiones de) ‘Eclipse IDE para C / C ++ Developers’ y minGW (4.8.1) para ayudarme a volver a C ++ después de un largo tiempo de distancia. He agregado -std=c++11 a Other flags en C/C++ Build/Settings/Tool Settings/GCC C++ Compiler/Miscellaneous Tengo un pequeño progtwig que utiliza varias funciones de C ++ 11 […]

¿Una statement que utiliza “auto” coincide con una statement externa que utiliza un especificador de tipo concreto?

Considere el siguiente progtwig: extern int x; auto x = 42; int main() { } Clang 3.5 lo acepta ( demostración en vivo ), GCC 4.9 y VS2013 no ( demostración en vivo para el primero ). ¿Quién tiene razón y dónde se especifica el comportamiento correcto en el Estándar C ++?

¿Por qué ‘std :: vector b {2};’ crear un vector de 1 elemento, y no uno de 2 elementos?

He estado jugando con C ++ 11 durante los últimos días, y se me ocurrió algo extraño. Si quiero inicializar uniformemente un int: int a{5}; Pero si hago lo mismo con un std :: vector: std::vector b{2}; No construye una matriz de dos elementos, sino una matriz con un elemento de valor dos. Parece que […]