Код: Выделить всё
template
struct TupleX;
template
struct TupleX< std::tuple > // Error
{
using Tail = tail_type;
};
using FooX = std::tuple;
using BarX = typename TupleX::Tail;
Код: Выделить всё
error C2027: use of undefined type 'TupleX' see declaration of 'TupleX'
error C2061: syntax error: identifier 'Tail'
Код: Выделить всё
template
struct TupleX;
template
struct TupleX< std::tuple >
{
using Head = head_type;
};
using FooX = std::tuple;
using BarX = typename TupleX::Head;
static_assert(std::is_same_v);
- Есть ли логическая ошибка? в предложенной мной реализации? (Я понимаю синтаксическую ошибку, но мне интересно, не нарушен ли в выражении какой-то фундаментальный принцип)
- Этот тип дедукции, поддерживаемой другими компиляторами?
- Это случай, определенный стандартом? (я пропустил некоторые документы, но не найди ответ)
Подробнее здесь: https://stackoverflow.com/questions/790 ... le-problem
Мобильная версия