请求成员'operator()'含糊不清......真的吗?

时间:2016-06-25 14:09:18

标签: c++ gcc clang

考虑以下最小例子:

struct T { void operator()() { } };
struct S { void operator()(int) { } };

struct U: T, S {
    U(): T{}, S{} { }
    //using T::operator();
    //using S::operator();
};

int main() {
    U u;
    u(42);
}

它与clang 3.8一样编译 无论如何,它无法使用GCC 6.1编译错误:

  

12:错误:成员'operator()'的请求不明确

请注意,如果取消注释using指令,GCC 6.1可以正常工作 据我所知,没有理由出现这样的错误,似乎clang是按预期工作的那个。

在打开的错误之前,我不知道是谁,我想问一下我是否遗漏了什么。
换句话说,给出错误是在这种情况下的正确行为,或者它本身就是一个错误?

0 个答案:

没有答案