Пожалуйста, обратите внимание на следующий фрагмент кода:определения структуры, которая получена из true_type всякий раз, когда данный SFINAE-состоянии конструктор будет принято
template<typename T, class Tuple>
class vector
{
using size_type = typename Tuple::size_type;
template<typename... Elements,
typename = decltype(std::declval<Tuple>().reserve(size_type()))>
typename = decltype(std::declval<Tuple>().push_back(T())),
vector(Elements&&... elements)
{ /* ... */ }
};
Я хочу, чтобы определить вложенную-структуру supports_reserve_push_back
, который является производным от std::true_type
всякий раз, когда в конструктор выше был бы включен (и который получен от std::false_type
в другом случае).
Как я могу это сделать?
Если это единственный c'tor, это может привести к старому перегрузку с помощью метода varargs. – StoryTeller
@StoryTeller Нет, есть больше конструкторов. В частности, есть другой конструктор с той же подписью. – 0xbadf00d
Ну, очевидным решением было бы дублирование проверок, которые позволят c'tor. – StoryTeller