此代码不会使用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'

最佳答案

从C ++ 17开始,仅在使用声明中允许扩展。 (ref

看起来您的GCC版本只是尚未具有该新功能,或者只是具有错误的方式(例如bug 79094)。

10-04 14:18