int와 int 모두를 사용하는 컨테이너를 작성하려고합니다 &. 하나 개의 클래스에서 그 일을 작동 :기본 클래스에서 오버로드 된 함수는 필요하지 않지만 절대 호출되지 않습니다.
template <class T>
class unified_class
{
public:
virtual void f(T &i){}
virtual void f(T &&i) {}
};
전화 :
unified_class<int> u;
u.f(8); // going to the second method
int a = 9;
u.f(a); // going to the first method
하지만이 벌어지고 난, 두 클래스 사이에 분할 이상한 무언가를 시도하고있다 :
template <class T>
class base_class
{
public:
virtual void f(T &&i) { /* it never reaches here*/}
};
template <class T>
class derived_class : public base_class<T>
{
public:
using base_class<T>::f;
virtual void f(T &i){}
};
이전과 같은 함수 호출을 호출하면 두 경우 모두 파생 클래스의 f()가 호출됩니다.
내가 무엇인가 놓친가요?
어떤 컴파일러를 사용합니까? 나는 gcc 4.6.3으로 잘 컴파일한다. – user2k5
Visual Studio 2010을 사용하고 있습니다 – wolfovercats