2011-08-11 12 views
9

Así que sé que C++ tiene una característica llamada "parámetros de plantilla de plantilla", donde puede pasar una plantilla de clase como parámetro de plantilla. Por ejemplo:¿Existe algo así como un parámetro de plantilla de plantilla de función?

template <typename T> 
class vector { ... }; 

template <template <typename> class container> // this is a template template parameter 
class foo { ... }; 

... 

foo<vector> f; // pass the vector template itself as template parameter 

¿Hay algo análogo para las plantillas de funciones? Es decir. ¿Hay alguna manera de pasar una plantilla de función (por ejemplo, std::make_pair) como un parámetro de plantilla a una clase?

+0

¿Cuál sería la sintaxis de la magia que le gustaría usar? – MSN

+0

@MSN: Estaba buscando escribir una función 'template void foo (F)' que se puede llamar como 'foo (bar)' donde 'bar' es una plantilla de función (ej.' Template void bar (T) ') 'foo' podría llamar a' F' con argumentos de varios tipos. Dejaré que tu imaginación piense en qué podría ir en '???' :). Esto se puede hacer funcionar si 'bar' es un objeto de función polimórfica (es decir, una clase sin plantilla con un operador de plantilla ()), en cuyo caso el parámetro de plantilla de 'foo' sería un parámetro de tipo ordinario. [continúa en el siguiente comentario] – HighCommander4

+0

[continuación del comentario anterior] Sin embargo, me gustaría utilizar una plantilla de función existente 'bar' sin adaptarla para que sea un objeto de función polimórfica. – HighCommander4

Respuesta

12

+0

Corto y dulce. –

+1

Eso está muy mal, lo hubiera encontrado útil ... – HighCommander4

+0

@ HighCommander4: puede usar plantillas de clase y llamar a funciones miembro estáticas. –

Cuestiones relacionadas