我編譯此代碼與海灣合作委員會(4.2.1蘋果打造5664)曖昧定義
#include <cstddef>
using std::size_t;
template <char I> struct index { };
struct a
{
void operator()(size_t const &) { }
};
struct b
{
template <char I>
void operator()(index<I> const &) { }
};
struct c: public a, public b { };
int main (int argc, char const *argv[])
{
c vc;
vc(1);
return 0;
}
,並給我下面的錯誤:
main.cpp: In function ‘int main(int, const char**)’:
main.cpp:22: error: request for member ‘operator()’ is ambiguous
main.cpp:14: error: candidates are: template<char I> void b::operator()(const index<I>&)
main.cpp:9: error: void a::operator()(const size_t&)
我不瞭解此代碼含糊不清的原因;這兩種方法有不同的簽名。
我很驚訝,鐺可以編譯你的代碼,而GCC抱怨。 – peoro 2011-01-28 19:06:40