助けてなのらー!
VC7.1 で以下の Multiply 関数の 2 つめの引数の const を削除してコンパイルすると
"function does not take 2 arguments" エラーになるのらー!
なんでなのらー?どうしたらいいのらー?

template<class T> 
class Complex {
public:
    typedef T ValueType;
};

template<class T>
class Vector {
public:
    typedef T ValueType;
};

typedef Vector<Complex<float> >  MyVector;

template<class VectorT>
void Multiply(VectorT* vec, const typename VectorT::ValueType::ValueType a)
{ }

void test()
{
    MyVector v;
    Multiply(&v, 2.0);
}