В паре с такой перегрузкой
| Код | template <typename T> inline T* getPtr(T* p) { return p; } template <typename T> inline T* getPtr(T& p) { return &p; }
|
Может быть полезен для получения адреса переменной, независимо от ее типа. Т.е. если это указатель, то вернуть его самого, иначе вернуть адрес. Функция может быть использована с шаблонным типом, когда не знаешь с чем имеешь дело, с указателем или ссылкой, но надо получить адрес объекта. В таком случае оператор &, примененный к указателю вернет адрес указателя, а функция getPtr вернет адрес объекта.
| Код | template <typename T> inline T* getPtr(T* p) { return p; }
template <typename T> inline T* getPtr(T& p) { return &p; }
template <typename T> void doSomethingWithT(const T& obj) { // we want to print object pointer std::cout << getPtr(obj) << std::endl; }
int main () { int x = 0; doSomethingWithT(x); doSomethingWithT(&x); }
|
|