Originally posted by: ashok1
IBM XL C/C++ Enterprise Edition V8.0 for AIX
Version: 08.00.0000.0015
Do I need to install any additional patch (OS and/or compiler)? Any comments/suggestion..
sample program:
$> cat 2.cpp
#include <iostream>
template <typename T>
class base
{
public:
typedef T value_type;
void erase(T t);
void erase(T t, T u);
};
template <typename T>
void base<T>::erase(T x)
{
std::cerr << "base::erase(T x)\n";
}
template <typename T>
void base<T>::erase(T x, T y)
{
std::cerr << "base::erase(T x, T y)\n"; }
template <typename T>
class derived : public base<T>
{
public:
typedef base<T> Base;
typedef typename Base::value_type value_type;
using Base::erase;
void erase(value_type x);
};
template <typename T>
void derived<T>::erase(value_type x)
{
std::cerr << "derived::erase(int x)\n"; }
class A : private derived<int>
{
public:
typedef derived<int> base_type;
void Test()
{
base_type::erase(42);
}
};
int main()
{
A().Test();
}
********
Error
********
$> xlC 2.cpp -o 2
"2.cpp", line 46.9: 1540-0219 (S) The call to "base_type::erase" has no best match.
"2.cpp", line 46.9: 1540-1230 (I) Argument number 1 is the implicit "this" argument.
"2.cpp", line 46.26: 1540-1229 (I) Argument number 2 is an rvalue of type "int".
"2.cpp", line 13.6: 1540-1202 (I) No candidate is better than "base<int>::erase(int)".
"2.cpp", line 46.9: 1540-1231 (I) The conversion from argument number 1 to "derived<int> &" uses "a base class conversion".
"2.cpp", line 46.26: 1540-1231 (I) The conversion from argument number 2 to "int" uses "the identity conversion".
"2.cpp", line 35.6: 1540-1202 (I) No candidate is better than "derived<int>::erase(value_type)".
"2.cpp", line 46.9: 1540-1231 (I) The conversion from argument number 1 to "derived<int> &" uses "a base class conversion".
"2.cpp", line 46.26: 1540-1231 (I) The conversion from argument number 2 to "int" uses "the identity conversion".
#AIX-Forum