具有别名类型的默认默认特殊成员函数-Clang vs. GCC

时间:2018-07-23 12:41:17

标签: c++ c++11 g++ clang++

GCC中继(9.0)和Clang中继(7.0)在以下代码上存在分歧:

template<int size_>
struct BadArray {
    static constexpr int size = size_;// GCC complains due to this indirection
    using Self = BadArray<size>;

    Self& operator=(const Self&) noexcept = default;
};

使用GCC编译失败,并显示错误消息

error: 'BadArray<size_>::Self& BadArray<size_>::operator=(const Self&)' cannot be defaulted

Clang接受代码(live example with GCC 8.1 and Clang 6.0)。

  1. 是否存在定义明确的行为?如果是,请哪个编译器正确
  2. 为GCC或Clang提交错误报告是否合适?

0 个答案:

没有答案