C ++: использование параметра шаблона в качестве аргумента по умолчанию в функции шаблона - PullRequest
0 голосов
/ 28 марта 2020

Учитывая приведенный ниже фрагмент кода:

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 - просто параметр по умолчанию)?

Ответы [ 2 ]

1 голос
/ 28 марта 2020

какая польза от этого кода! См. https://en.cppreference.com/w/cpp/language/template_parameters#Non -type_template_parameter

Следовательно, если double изменить на int, переменные будут x=8, n=3 и m=2.

Другая вещь изменится void main() на int main(). См. Что должно возвращать main () в C и C ++?

1 голос
/ 28 марта 2020

В вашем примере n равно 3, а x равно 8. Фактическое значение параметра имеет приоритет над значением по умолчанию.

...