Есть ли еще одна ошибка компилятора gcc относительно унаследованных конструкторов?

Этот код не компилируется с использованием gcc HEAD 10.0.0 20190, но компилируется с использованием clang HEAD 9.0.0

#include <iostream>

struct A
{
    A() = default;
    A( int ) {}
};

struct B
{
    B() = default;
    B( const char * ) {}
};

template <typename...Bases>
struct C : Bases...
{
    using Bases::Bases...;
};

int main()
{
}

Ошибка

rog.cc:18:23: error: parameter packs not expanded with '...':
   18 |     using Bases::Bases...;
      |                       ^~~
prog.cc:18:23: note:         'Bases'

1 ответ

Решение

Расширения разрешены только в объявлениях использования начиная с C++17. ( ссылка)

Похоже, что ваша версия GCC просто не имеет этой новой функции, или имеет, но ошибочно (например, ошибка 79094).

Другие вопросы по тегам