Учитывая приведенный ниже фрагмент кода:
template<int n, double m> void function(int x=n){ double y=m; int array[n]; …. } void main () { function<1+2,2>(8); }
когда функция скомпилирована, x будет 3 или 8 (так как n - просто параметр по умолчанию)?
какая польза от этого кода! См. https://en.cppreference.com/w/cpp/language/template_parameters#Non -type_template_parameter
Следовательно, если double изменить на int, переменные будут x=8, n=3 и m=2.
double
int
x=8
n=3
m=2
Другая вещь изменится void main() на int main(). См. Что должно возвращать main () в C и C ++?
void main()
int main()
В вашем примере n равно 3, а x равно 8. Фактическое значение параметра имеет приоритет над значением по умолчанию.
n
x