А почему вот так работает:
| Код | template <typename T> class A { public: T value; A(){} A(T t) : value(t) {} };
template <typename T> A<T>* Fn(T t) { return new A<T>(t); }
int _tmain(int argc, _TCHAR* argv[]) { int v = 19; A<int>* a = Fn(v); return 0; }
|
а при замене шаблонного параметра на int& в 21 строке
| Код | template <typename T> class A { public: T value; A(){} A(T t) : value(t) {} };
template <typename T> A<T>* Fn(T t) { return new A<T>(t); }
int _tmain(int argc, _TCHAR* argv[]) { int v = 19; A<int&>* a = Fn(v); return 0; }
|
VC2005 выдает ошибку | Код | Error 1 error C2440: 'initializing' : cannot convert from 'A<T> *' to 'A<T> *' |
Он не может конвертировать тип в такой же тип
|