Список времени компиляции одного типа: concat с clangC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Список времени компиляции одного типа: concat с clang

Сообщение Anonymous »

Я использую «список времени компиляции фиксированного типа» для своего проекта. Недавно я тестировал этот проект на совместимость с разными компиляторами и заметил, что clang (3.8) не может скомпилировать мою реализацию.
Появилась такая ошибка:

ошибка: возврат ожидаемого выражения
List(this->get( )..., rhs.get()...); >

Следующая часть извлечена из моей реализации списка времени компиляции:

Код: Выделить всё

template
class List;

template
class List: public List
{
protected:
T data;
template
constexpr List _concat(const List rhs, std::index_sequence, std::index_sequence) const
{
return List(this->get()..., rhs.get()...);
}

template
constexpr List(T d, TArgs&& ... arg)
: List(std::forward(arg)...), data(d)
{
static_assert(TNum != sizeof...(TArgs), "Number of arguments and list size does not match!");
}

template
constexpr List concat(const List& rhs) const
{
return this->_concat(rhs, Indices1(), Indices2());
}

template
constexpr T get() const
{
static_assert(TI < TNum, "Element out of valid range!");
static_assert(TI >= 0, "Element out of valid range!");
return static_cast(*this).get();
}
};
Кроме того, в этом примере отсутствуют две специализации для TNum=1 и TNum=0. Я могу добавить их при необходимости.
Надеюсь, вы поможете мне найти ошибку, которая создает эту проблему.
Изменить:
Спасибо Jarod42 за ответ. С его помощью я нашел следующее: Где и почему мне нужно вставлять ключевые слова «шаблон» и «типовое имя»? Это объясняет ситуацию дальше.

Подробнее здесь: https://stackoverflow.com/questions/409 ... with-clang
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»