MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Перегрузка функций и шаблоны в С++"
Answer 1112976
Нет, шаблоны далеко не всегда заменяют перегрузку функций. Шаблоны совсем не помогают, если функции должны делать разное. Как, например, заменить шаблоном такую пару перегруженных функций?
double CalcSum(double x, double y) { return x + y; } void CalcSum(double x, double y,double& res) { res = x + y; }
Даже если сделать так:
template<typename... Args> double CalcSum(Args...) { return 0; } template<> double CalcSum<double,double>(double x, double y) { return x + y; } template<> double CalcSum<double, double,double&>(double x, double y, double& res) { res = x + y; return res; }
То проблема этого кода (помимо того, что он выглядит ужасно), в том что он все равно не вполне работает как нужно. Если просто писать
CalcSum(1.0, 2.0, res)
, нужная специализация вызываться не будет - нужно писатьCalcSum<double, double, double&>(1.0, 2.0, res);
...
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.