Я пытаюсь установить требования, чтобы параметр функции был многомерным векторным итератором.
Для начала я попытался установить многомерный вектор в качестве требования.
То есть std::vector<std:vector<typename>>
должно быть разрешено в качестве аргумента, а std::vector<typename>
не должно быть разрешено.
Вот как я этого добился
#include<iostream>
#include<vector>
template<typename some_vect_type>
concept IS_MULTI_DIM = requires(some_vect_type a, some_vect_type b)
{
{a[0].begin()};
{b[0].begin()};
};
template<IS_MULTI_DIM some_vect_type>
void putVectors(some_vect_type a, some_vect_type b)
{
std::cout<<"Multi dimensional vectors received\n";
}
int main()
{
std::vector<std::vector<int>> x;
putVectors(x,x);
}
Я не уверен, является ли этот метод правильным или принятым способ достижения. Поскольку не векторы могут также иметь .begin()
Если это так, как я могу проверить то же самое для их итераторов вместо многомерного вектора?