Articles of c ++ c ++ 11

Cómo devolver un std :: string.c_str ()

Tengo un método que devuelve el puntero de char constante. Hace uso de std::string y finalmente devuelve su c_str() char. const char * returnCharPtr() { std::string someString; // some processing!. return someString.c_str(); } Tengo un informe de la herramienta COVERITY que dice que lo anterior no es un buen uso. He buscado en Google y […]

Detectando constexpr con SFINAE

Estoy trabajando en la actualización de algunos códigos C ++ para aprovechar la nueva funcionalidad en C ++ 11. Tengo una clase de rasgo con algunas funciones que devuelven tipos fundamentales que la mayoría de las veces, pero no siempre, devuelve una expresión constante. Me gustaría hacer diferentes cosas dependiendo de si la función es […]

Especificando un tipo para todos los argumentos pasados ​​a la función variadic o a la función de plantilla variadica w / out usando array, vector, structs, etc.

Estoy creando una función (posiblemente función de miembro, no es que importe … ¿quizás sí?) Que necesita aceptar un número desconocido de argumentos, pero quiero que todos sean del mismo tipo. Sé que podría pasar una matriz o un vector, pero quiero poder aceptar la lista de argumentos directamente sin estructura adicional o incluso con […]

Llamar a una función para cada argumento de plantilla variadica y una matriz

Entonces tengo un tipo X : typedef … X; y una función de plantilla f : class void f(X& x_out, const T& arg_in); y luego una función g : void g(const X* x_array, size_t x_array_size); Necesito escribir una función de plantilla variadica h que haga esto: template void h(Args… args) { constexpr size_t nargs = […]

¿Cuál es el procedimiento de pedido parcial en la deducción de plantilla?

Leí sobre el estándar c ++ 11 pero no puedo entender bien el significado de lo siguiente. Por ejemplo, son muy preferidos. Se usan dos conjuntos de tipos para determinar el orden parcial. Para cada una de las plantillas involucradas, está el tipo de función original y el tipo de función transformada. [Nota: la creación […]

static_assert falla la comstackción aunque la función de plantilla no se llame en ninguna parte

Yo uso g ++ 4.6.3, (actualmente el paquete predeterminado para ubuntu 12.04) con el indicador c ++ 0x, y me tropiezo con esto: template inline T getValue(AnObject&) { static_assert(false , “this function has to be implemented for desired type”); } con el error de comstackción: static_assertion failed “this function has to be implemented for the […]

¿Por qué debería evitar std :: enable_if en las firmas de funciones?

Scott Meyers publicó el contenido y el estado de su próximo libro EC ++ 11. Escribió que un elemento en el libro podría ser “Avoid std::enable_if in function std::enable_if “ . std::enable_if se puede usar como un argumento de función, como un tipo de retorno o como una plantilla de clase o un parámetro de […]

Cuándo usar std :: forward para reenviar argumentos?

C ++ 0x muestra un ejemplo de uso de std::forward : template void foo(T&& arg) { bar(std::forward(arg)); } ¿Cuándo es ventajoso usar std::forward , always? Además, requiere usar && en la statement de parámetros, ¿es válido en todos los casos? Pensé que tenías que pasar temporarios a una función si la función se declaró con […]

C ++ 11: puedo pasar de múltiples args a tuple, pero ¿puedo pasar de tuple a multiple args?

Posible duplicado: ¿Cómo puedo expandir una tupla en los argumentos de la función de plantilla variadic? “Desempaquetar” una tupla para llamar a un puntero de función coincidente En las plantillas de C ++ 11, ¿hay alguna manera de usar una tupla como argumento individual de una función (posiblemente una plantilla)? Ejemplo: Digamos que tengo esta […]

¿Por qué las lambdas pueden ser mejor optimizadas por el comstackdor que las funciones simples?

En su libro The C++ Standard Library (Second Edition) Nicolai Josuttis afirma que el comstackdor puede optimizar las lambdas mejor que las funciones simples. Además, los comstackdores de C ++ optimizan las lambdas mejor que las funciones comunes. (Página 213) ¿Porqué es eso? Pensé que a la hora de crear ya no debería haber ninguna […]