Wiem, że C++ ma funkcję o nazwie "parametry szablonu szablonu", w której można przekazać szablon klasy jako parametr szablonu. Na przykład:Czy istnieje coś takiego jak parametr szablonu szablonu funkcji?
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
Czy istnieje analogiczna funkcja dla szablonów funkcyjnych? To znaczy. czy istnieje sposób przekazania szablonu funkcji (na przykład std::make_pair
) jako parametru szablonu do klasy?
Co byłoby magiczne składni byłoby chcesz użyć? – MSN
@MSN: Chciałem napisać funkcję 'template ?? F> void foo (F)' która może być nazwana jako 'foo (bar)' gdzie 'bar' jest szablonem funkcji (np.' Template void bar (T) '). 'foo' może wtedy wywołać' F' z argumentami różnych typów. Zostawię to twojej wyobraźni co do tego, co może się wydarzyć w '???' :) To może być wykonane, jeśli 'bar' jest polimorficznym obiektem funkcji (tj. Klasą bez szablonu z operatorem szablonowym ()), w którym to przypadku parametr szablonu 'foo' byłby zwykłym parametrem typu. [kontynuacja w następnym komentarzu] –
HighCommander4
[kontynuacja z wcześniejszej wypowiedzi] Chciałbym jednak użyć istniejącego szablonu funkcji 'bar' bez dostosowania go do funkcji polimorficznej. – HighCommander4