Предупреждение: `auto` в формальном параметре - PullRequest
0 голосов
/ 04 апреля 2020

Я выполнил следующую программу -

#include <iostream>
#include <vector>
using namespace std;

void display(const vector<auto> &arr) {
    for (auto const &val: arr) 
        cout<<val<<" ";
    cout<<endl;
}

int main() {
    vector<int> a (6);
    display(a);

    vector<double> b (3);
    display(b);
    return 0;
}

И она выдает следующее предупреждение (без ошибок) -

warning: use of ‘auto’ in parameter declaration only available with ‘-fconcepts’
5 | void display(const vector<auto> &arr) {                                                                                                                          
  |                           ^~~~          

Почему я получаю это предупреждение и что это предупреждение о?

Должен ли я использовать auto в качестве формального параметра здесь ??

Что может быть альтернативным способом, если это неправильный подход ??

1 Ответ

2 голосов
/ 04 апреля 2020

Вы действительно хотите шаблон:

template<typename T>
void display(const vector<T>& arr)
{
    for (auto const &val: arr) 
        cout<<val<<" ";
    cout<<endl;
}
...