SFINAE in variadic constructor
问题 I want to define a generic strong alias type, i.e. a type template<typename T, auto ID = 0> class StrongAlias { T value; }; such that for a type T a StrongAlias<T> can be used in exactly the same way as T , but StrongAlias<T, 0> and StrongAlias<T, 1> are different types that can not be implecitly converted to each other. In order to mimic a T as perfectly as possible, I would like my StrongAlias to have the same constructors as T . This means I would like to do something like the following: