小编bre*_*ker的帖子

Diamond层次结构中的虚函数重载在clang和gcc中产生不同的结果

以下代码在clang上产生不同的结果。

#include <iostream>

struct Dummy1 {};
struct Dummy2 {};

struct A {
    virtual void foo(Dummy1) {
        std::cout << "A" << std::endl;
    }
    virtual void foo(Dummy2) {
        std::cout << "A" << std::endl;
    }
};


template<class T>
struct C : virtual A {
    using A::foo;
    void foo(Dummy2) override {
        std::cout << "C" << std::endl;
    }   
};


template<class T>
struct B : virtual A {
    using A::foo;
    void foo(Dummy1) final {
        std::cout << "B" << std::endl;
    }   
};

template<class T>
struct D : …
Run Code Online (Sandbox Code Playgroud)

c++ gcc clang language-lawyer

16
推荐指数
1
解决办法
281
查看次数

标签 统计

c++ ×1

clang ×1

gcc ×1

language-lawyer ×1