尝试通过使用带有虚拟参数的模板别名隐藏基类来混淆clang和gcc时,行为上的差异

问题描述

请考虑以下c ++程序:

class A
{
    protected:
        int x;
};

template<typename X>
using B = A;

template<typename T>
class C : public B<T>
{
    public:
        void f()
        {
            x = 0;
        }
};

int main()
{
}

在使用-std=c++17 -pedantic-errors作为编译选项的clang和gcc进行编译时,它们的行为有所不同:Clang编译没有任何错误,但gcc给出了有关无法查找标识符x的编译错误。

在这种情况下,c ++标准怎么说?是否允许两种行为,或者其中一种编译器在这种情况下有错误?

编译器资源管理器链接:https://godbolt.org/z/EYvYrr

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)