我正在使用 Apple 的 LLVM 4.2 编译器来编译这个 C++ 代码。我已经用不同的元组组合重载了一个成员函数,并且我相信我正在正确调用其中的一个,但编译器发现了歧义。本质上,我试图在下面调用方法 (1),但编译器发现方法 (2) 也可以接受/兼容。这是为什么?我打开了 C++11 标志。
enum class Enum1 { ... }
enum class Enum2 { ... }
enum class Enum3 { ... }
enum class Enum4 { ... }
void myMethod() {
Enum1 e1;
Enum2 e2;
Enum3 e3;
doSomething({e1,e2,e3}); // should pick (1), yet compiler finds (2) compatible also!?
}
inline void doSomething(const tuple<Enum1,Enum2,Enum3>& p) { // (1)
...
}
inline void doSomething(const tuple<Enum1,Enum2,Enum3,Enum4>& p) { // (2)
...
}