Im folgenden Beispiel versuche ich, ein Template-Parameterpaket im Grunde Alias zu verwenden.Typ Alias ein Template-Parameterpaket
Im Standard ist es nicht möglich, also habe ich Leute gefunden, die mit einem Tuple oder einer leeren Templatestruktur umgehen. Allerdings scheint meine Situation anders, weil Ich habe kein Argument Parametertyp Pack müssen passen ...
(Ich weiß, diese Probe dumm scheint, aber es ist ein minimaler PoC. In der Codebasis der Typliste viel länger wird und das wäre wirklich nützlich sein)
#include <iostream>
#include <tuple>
template<typename T>
void f(T t)
{
std::cout << "templated f()" << std::endl;
}
template<>
void f(int t)
{
std::cout << "specialized f()" << std::endl;
}
template<typename A, typename B>
void fn()
{
f(A());
}
template<int, char>
void fn()
{
int a;
f(a);
}
// Can't seem to define this correctly.
//using MyType = std::tuple<int, char>()::type;
int
main(int, char**)
{
fn<char, char>();
// I have
fn<int, char>();
// I want some alias;
//fn<MyType>();
return 0;
}
Referenzen.
- Is it possible to typedef a parameter pack?
- Using template parameter pack instead of macro
- Aliasing a template parameter pack
Danke, das ist eine nette Lösung Ich mag einfach nicht die Schnittstelle, die die Funktoren benötigen, wenn sie nicht freistehende Funktionen, sondern Klassenmitglieder sind. Sie hätten 'object :: fn()' anstelle von 'object.fn()'. – dzan