Как передать шаблон в функцию в качестве параметра - PullRequest
0 голосов
/ 16 февраля 2019
    // Example program
#include <iostream>
#include <string>
#include <array>

using namespace std;

int returnSize(template z <class T, size_t>)
{
    /*if(arr.size() ==0)
    return 1;
    else
    return 2;
    */
    return 1;
}

int main()
{

  array<int,5> z;

  cout<<returnSize(z)<<endl;
}

Я пытаюсь передать этот шаблон массива z в функцию, чтобы я мог рассчитать его размер. Но я не знаю, как передать шаблон в качестве параметра функции.

1 Ответ

0 голосов
/ 16 февраля 2019

Вы не можете объявить сам шаблон внутри параметров функции.Шаблон должен находиться перед функцией, и тогда вы можете использовать параметры шаблона внутри функции по мере необходимости, например:

#include <iostream>
#include <array>

template <class T, size_t N>
int returnSize(const std::array<T, N> &arr)
{
    return arr.size();
    // or: return N;
}

int main()
{
    std::array<int,5> z;
    std::cout << returnSize(z) << std::endl; // <-- calls returnSize<int,5>(z) ...
}

Выход:

5

Демонстрация в реальном времени

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...