美文网首页
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

相关文章

  • C++20学习:concept用法介绍

    概述 众所周知,C++的泛型强大,很多语言都学了,比如C#、Java,虽然Java的泛型只是语法糖,不值得一提。 ...

  • C++ Modules 初窥

    C++ Modules Modules 被认为是C++20的BigFour特性(Modules,Concept,R...

  • [译]iOS Core Foundation Design Co

    本文翻译: Core Foundation design concept 简介 Core Foundation 是...

  • C++20:标准库

    原文详见:C++20: The Library 在上篇文章 C++20:核心语言 中我们介绍了 C++20 的核心...

  • C++雾中风景18:C++20, 从concept开始

    转眼间,C++20的标准已经发布快两年了。不少C++的开源项目也已经将标准升级到最新的C++20了,笔者也开启了新...

  • C++20:并发

    原文详见:C++20: Concurrency 本篇是 C++20 概览系列的最后一篇。今天我将介绍 C++ 新标...

  • C++20:概念之细节

    原文详见:C++20: Concepts, the Details 在我的上一篇文章 C++20:两个极端和概念的...

  • Semaphore 原理简介和使用

    Semaphore实现共享锁 简介 DEMO了解其用法 Semaphore实现互斥锁 简介 DEMO了解其用法 S...

  • GCD用法简介

    GCD用法 GCD Dispatch Queue介绍 苹果官方对GCD的说明:开发者要做的只是定义想执行的任务并追...

  • Postman用法简介

    Postman用法简介-Http请求模拟工具 在我们平时开发中,特别是需要与接口打交道时,无论是写接口还是用接口,...

网友评论

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

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