Не мое отрицательное мнение, кстати.

тся ли правильными несколько специализаций шаблонов классов, если каждая из них отличается только между шаблонами, включающими параметры шаблона, в не выводимых контекстах?

Типичный примерstd::void_t использует его для определения черты, которая показывает, есть ли у типа членtypedef называется "тип". Здесь используется одна специализация. Это может быть расширено, чтобы определить, есть ли у типаили членtypedef называется "type1", или один называется "type2". Код C ++ 1z ниже компилируется с GCC, но не с Clang. Это законно?

template <class, class = std::void_t<>>
struct has_members : std::false_type {};

template <class T>                      
struct has_members<T, std::void_t<typename T::type1>> : std::true_type {};

template <class T>                                                        
struct has_members<T, std::void_t<typename T::type2>> : std::true_type {};

Ответы на вопрос(0)

Ваш ответ на вопрос