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>(); }