Код: Выделить всё
#include
template
struct args_holder
{
using type = std::tuple;
};
template
struct base_holder;
template
struct base_holder
: args_holder
{
};
template
using first_arg_type = std::tuple_element_t;
struct test_struct
{
void test_function(int x)
{
}
};
int main()
{
static_assert(std::is_same_v);
}
Первый вопрос: что именно делает &? Согласно IntelliSense, с & или без него decltype оценивается как void(test_struct::*)(int x), а шаблон оценивается как тип int.< /p>
Второй вопрос: у меня возникли проблемы с пониманием процесса вывода из имени типа base_holder::type. Как специализация понимает выбор шаблона с двумя+ параметрами и отделение этих типов от одного заданного ему типа decltype?
Подробнее здесь: https://stackoverflow.com/questions/786 ... -questions
Мобильная версия