gcc和clang之间的差异用于两阶段查找

时间:2018-02-27 23:45:16

标签: c++

考虑以下代码:

#include <variant>

struct A {};
struct B {};

using V = std::variant<A, B>;

struct Foo {
    void alpha(V v) {
        std::visit([this] (auto a) { beta(a); }, v);
    }

    template <typename T>
    void beta(const T&) { }
};

int main() {
    Foo f;
    f.alpha(A{});
    f.alpha(B{});
}

使用g ++ 7.2编译代码很好,但无法使用clang4.0进行编译。如果我搬家

    template <typename T>
    void beta(const T&) { }

以上alpha然后clang工作正常。

我认为这与两阶段查找有关,但我不确定。有谁知道发生了什么事?

直播链接:https://wandbox.org/permlink/MnA9on1aI1cYubIi

0 个答案:

没有答案