Mit C++20 und GCC9 wir können als Template Parameter nun auch einfach eigenen Typen angeben. Ohne uns mit Workarounds herumschlagen zu müssen.
Ein einfaches Beispiel sollte es verdeutlichen
struct MyType {
int value;
};
template<MyType x>
auto func2() {
return x.value;
}
auto func3() {
func2<MyType{1}>();
constexpr MyType x{2};
return func2<x>();
}