template<typename Body>
Body solve(Body a, Body b){
Body zero(0);
return zero;
}
template<typename Body, Body& zero>
Body solve(Body a, Body b){
return zero;
}
complex<double> zero(0);
int main() {
complex<double> c1(1,2);
complex<double> c2(3,4);
solve<complex<double>, zero_complex> (c1,c2);
return 0;
}
Привет, я скомпилировал приведенный выше код, и все в порядке (здесь я опустил подробности). Теперь я заметил, что zero
должна быть глобальной переменной и, кроме того, шаблоны должны получать zero
по ссылке. В противном случае это вызывает ошибку компиляции. Я использую С++11.
Пожалуйста, объясните мне, почему это должно быть:
- пройти по ссылке
- глобальная переменная
Заранее спасибо.