LINUX.ORG.RU

Шаблоны в C++


0

0

Собственно не понимаю вот чего:
Пусть есть:

template<class T> T sqrt(T);
template<class T> Complex<T> sqrt (Complex<T>)

void f(Comlaex<double> x)
{ sqrt(z); }

При разрешении перегрузки (согласно Страуструпу) используются следующие специализации:
sqrt<double>(Complex<double>)
sqrt<Complex<double>>(Complex<double>)
Теперь вопрос:
Откуда вторая я могу понять, а откуда первая???? И по каким таким правилам она взялась? (это моя главная непонятка к 13 главе соответсвующего труда, помогите понять плиз)

anonymous

>а откуда первая????

sqrt<double>(Complex<double>) это template<class T> Complex<T> sqrt (Complex<T>) при T=double

generatorglukoff ★★
()

> void f(Comlaex<double> x) { sqrt(z); }

z ?

Burbaka ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.