相关疑难解决方法(0)

C++20 概念:元素可迭代概念

我正在尝试创建一个ElementIterable可以确定类型是否为嵌套范围的概念。例如,in 中的元素std::vector<int>不可迭代,但std::vector<int>in 中的元素 ( )std::vector<std::vector<int>>是可迭代的。我想到了使用的想法std::iterator_traits<T>,实验代码如下。然而,这个ElementIterable概念并不像预期的行为那样工作。有什么想法可以解决这个ElementIterable概念吗?

template<typename T>
concept ElementIterable = requires(typename std::iterator_traits<T>::value_type x)                        //  requires-expression
{
    x.begin();          // must have `x.begin()`
    x.end();            // and `x.end()`
};
Run Code Online (Sandbox Code Playgroud)

这个的用法ElementIterable是here。

template<typename T> requires ElementIterable<T>
void Foo(T input);

template<typename T> requires ElementIterable<T>
void Foo(T input)
{
    std::cout << "Element iterable" << std::endl;
}

template<typename T>
void Foo(T input);

template<typename T>
void Foo(T input)
{
    std::cout << "Element not …
Run Code Online (Sandbox Code Playgroud)

c++ c++-concepts c++20

5
推荐指数
3
解决办法
604
查看次数

标签 统计

c++ ×1

c++-concepts ×1

c++20 ×1