Articles of c ++ c ++ 11

¿Es posible “almacenar” un paquete de parámetros de plantilla sin expandirlo?

Estaba experimentando con C ++ 0x plantillas variadas cuando tropecé con este problema: template struct identities { typedef Args type; //compile error: “parameter packs not expanded with ‘…’ }; //The following code just shows an example of potential use, but has no relation //with what I am actually trying to achieve. template struct convert_in_tuple { […]

void_t “puede implementar conceptos”?

Estaba viendo la segunda parte de la charla CppCon2014 de Walter Brown sobre metaprogtwigción de plantillas , durante la cual discutió los usos de su novedosa construcción void_t . Durante su presentación, Peter Sommerlad le hizo una pregunta que yo no entendí del todo. (el enlace va directamente a la pregunta, el código en discusión […]

Especialización de plantillas y problemas de enable_if

Me encuentro con un problema relacionado con el uso apropiado de enable_if y la especialización de plantillas. Después de modificar el ejemplo (por razones de confidencialidad), aquí hay un ejemplo comparable: Tengo una función llamada “menos” que comprueba si 1st arg es menor que 2nd arg. Digamos que quiero tener 2 tipos diferentes de implementaciones […]

Llene una matriz utilizando Constexpr en tiempo de comstackción

Me gustaría llenar una matriz de enumeración usando constexpr. El contenido de la matriz sigue un cierto patrón. Tengo una enumeración que separa el conjunto de caracteres ASCII en cuatro categorías. enum Type { Alphabet, Number, Symbol, Other, }; constexpr Type table[128] = /* blah blah */; Me gustaría tener una matriz de 128 Type […]

Expansión con plantillas variadic

¿Cuál es la diferencia entre las siguientes 3 llamadas para gun función de gun ? template void fun(Ts… vs) { gun(A::hun(vs)…); gun(A::hun(vs…)); gun(A::hun(vs)…); } Estoy interesado en una respuesta que explique las tres llamadas usando un ejemplo específico.

Convierta std :: tuple en std :: array C ++ 11

Si tengo std::tuple (donde el tipo es homogéneo), ¿hay una función stock o constructor para convertir a std::array ? Editar:: Pude hacerlo funcionar con código de plantilla recursivo (mi borrador de respuesta se publicó a continuación). ¿Es esta la mejor manera de manejar esto? Parece que habría una función de stock para esto … O […]

¿Qué hace este código de plantilla variadic?

template void for_each_argument(F f, Args&&… args) { [](…){}((f(std::forward(args)), 0)…); } Recientemente apareció en isocpp.org sin explicación.

C ++ 11: cálculo del tiempo de comstackción de la matriz

Supongamos que tengo alguna función constexpr f: constexpr int f(int x) { … } Y tengo alguna const int N conocida en tiempo de comstackción: Ya sea #define N …; o const int N = …; según sea necesario por tu respuesta. Quiero tener una matriz int X: int X[N] = { f(0), f(1), f(2), […]

std :: fstream buffering versus manual buffering (¿por qué 10x de ganancia con buffer manual)?

He probado dos configuraciones de escritura: 1) almacenamiento intermedio Fstream: // Initialization const unsigned int length = 8192; char buffer[length]; std::ofstream stream; stream.rdbuf()->pubsetbuf(buffer, length); stream.open(“test.dat”, std::ios::binary | std::ios::trunc) // To write I use : stream.write(reinterpret_cast(&x), sizeof(x)); 2) almacenamiento en búfer manual: // Initialization const unsigned int length = 8192; char buffer[length]; std::ofstream stream(“test.dat”, std::ios::binary | […]

Especialización de plantillas Alias

¿Pueden las plantillas de alias (14.5.7) estar explícitamente especializadas (14.7.3)? Mi estándar-fu me falla, y no puedo encontrar un comstackdor para probar. El texto “cuando una plantilla-id se refiere a la especialización de una plantilla de alias” implica que sí , pero luego el ejemplo parece referirse a otra cosa, lo que implica que no […]