concept for C++20用法简介

2023-02-22  本文已影响0人  fatshi

简单来说,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

上一篇 下一篇

猜你喜欢

热点阅读