GCC无法在可变参数概念模板类上编译可变参数成员概念模板

时间:2019-07-13 22:15:24

标签: c++ gcc variadic-templates c++20 c++-concepts

想象一下,我有一个带有可变参数概念模板成员的可变参数概念模板类。

#include <type_traits>

template<typename T>
concept Arithmetic = std::is_arithmetic_v<T>;

template<Arithmetic... Scalars>
class Foo
{
public:
    template<Arithmetic... OtherScalars>
    Foo(OtherScalars&&... args)
    {

    }
};

以上代码无法使用GCC (trunk)进行编译,但是可以使用Clang (experimental concepts)进行编译。

GCC编译器输出

source>: In instantiation of 'class Foo<int, float, double>':
<source>:20:33:   required from here
<source>:11:5: internal compiler error: in tsubst_constraint, at cp/constraint.cc:1949

   11 |     Foo(OtherScalars&&... args)
      |     ^~~

Please submit a full bug report, with preprocessed source if appropriate. See <https://gcc.gnu.org/bugs/> for instructions.
ASM generation compiler returned: 1

LIVE DEMO

这是GCC中的错误吗?还是我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

是的,这是一个错误。输出字面意思是这样,并要求您报告错误报告。