美文网首页
concept for C++20用法简介

concept for C++20用法简介

作者: fatshi | 来源:发表于2023-02-22 09:47 被阅读0次

    简单来说,concept就是用来限制泛型的类型。常见有5种用法:

    template<typename T>
    concept Integral = std::is_integral<T>::value;
    

    这段代码定义了一个概念(Concept) Integral ,用于对传入的类型进行判断,判断其是否为整型类型。其中 std::is_integral<T>::value 是一个C++类型特性(Type Trait),用于判断类型T是否为整型类型。如果T为整型类型,那么 std::is_integral<T>::value 的值为 true ,否则为 false 。该概念可以用于限定模板类型参数T必须为整型类型,例如:

    template <Integral T>
    void foo(T x) {
        // ...
    }
    

    在调用 foo 函数时,如果传入的实参不是整型类型,则会在编译期间产生错误。

    用法一

    Integral auto Add(Integral auto a, Integral auto b)
    {
        return a + b;
    }
    

    用法二

    template<typename T> 
    requires Integral<T>
    T Add(T a, T b)
    {
        return a + b;
    }
    

    用法三

    template<typename T>
    T Add(T a, T b) requires Integral<T>
    {
        return a + b;
    }
    

    用法四

    template<Integral T>
    T Add(T a, T b)
    {
        return a + b;
    }
    

    用法五

    Integral{T}
    T Add(T a, T b)
    {
        return a + b;
    }
    

    【参考】https://zhuanlan.zhihu.com/p/107610017

    相关文章

      网友评论

          本文标题:concept for C++20用法简介

          本文链接:https://www.haomeiwen.com/subject/hoqakdtx.html