C++默认可构造性判定差异:GCC与Clang行为不一致问题咨询
Clang与GCC对类型默认可构造性的判定规则分歧说明
针对C类型的默认可构造性判定,Clang与GCC的实现逻辑存在分歧,需确认GCC的实现是否存在错误,以及C标准对该场景是否有明确定义。
以下是问题复现代码:
#include <concepts> class base { protected: base() = default; }; struct der : base { using base::base; der(int) {} }; der d; // 编译报错:constexpr base::base() 在此上下文内属于受保护成员 static_assert(std::semiregular<der>); // 该断言在GCC环境下编译失败
目前JHBonarius与alagner提供的信息已覆盖相关规则细节,引用的资料对该场景的说明较为完善。问题排查方向已调整为聚焦Clang的实现偏离行为,相关Bug上报流程已启动,后续进展将在此同步。
内容的提问来源于stack exchange,提问作者303
相关产品推荐
相关产品推荐

