У меня есть класс foo
, который принимает два параметра шаблона, и я хочу установить по умолчанию второй параметр в качестве первого параметра шаблона первого параметра, если он существует. foo
будет выглядеть как
template<typename Class, typename T = typename first_template_parameter<Class>::type>
class foo
{
...
}
, и если Class
определено как template<typename A, typename B, ...> class bar
, я хочу, чтобы T
было A
. Так, например, foo<std::map<int, float>>
будет иметь Class = std::map<int, float>
, а T = int
, foo<int, char>
будет иметь Class = int
и T = char
. Как я могу реализовать first_template_parameter
?