Я хотел бы написать что-то вроде этого:
template <class T>
using MyTypeOrTupple = typename std::conditional<has_member_type_MyType<T>::value,
typename T::MyType,
std::tuple<> >::type;
Я реализовал has_member_type_MyType
, используя https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Member_Detector
Однако GCC (4.8.4) все еще жалуется на использование T::MyType
, когда MyType
не определено в T
. Есть ли способ решить это?