当前位置: 首页> 娱乐> 影视 > 建设网站公司选哪家好_营销型网站建设都具有哪些优势_站长之家音效_南和网站seo

建设网站公司选哪家好_营销型网站建设都具有哪些优势_站长之家音效_南和网站seo

时间:2025/7/9 11:21:02来源:https://blog.csdn.net/weixin_73622063/article/details/144794534 浏览次数:0次
建设网站公司选哪家好_营销型网站建设都具有哪些优势_站长之家音效_南和网站seo

concept

概述: 是C++20引入的新机制,旨在提供一种类型约束机制,使得模板的使用更加直观、可读且类型安全

示例:

#include <iostream>
#include <concepts>
#include <string>// 定义concept
template <typename T>
concept Incrementable = requires(T x) {{ ++x } -> std::same_as<T&>;  // 确保类型 T 支持自增操作并返回 T&{ x++ } -> std::same_as<T>;   // 确保类型 T 支持后置自增操作并返回 T
};// 使用定义的concept来约束模板参数
template <Incrementable T>
void increment(T& x) {++x;std::cout << x << std::endl;
}int main() {int a = 5;increment(a); // 有效,支持int自增操作// std::string b = "hello";// increment(b); // 编译错误,不支持自增操作
}

常见的内建concept:

  • std::integral:表示整数类型(如int,long等)
  • std::floating_point:表示浮点类型(如float、double等)
  • std::same_as:检查两个类型是否相同
  • std::convertible_to:检查一个类型是否可以转换为另一个类型
  • std::invocable:检查类型是否可以被调用(如函数对象)
  • std::signed_integral:表示带符号整数类型
  • std::unsigned_integral:表示无符号整数类型

示例:

template <std::integral T>
T add(T a, T b) {return a + b;
}int main() {std::cout << add(5, 10) << std::endl; // 有效,int是integral类型// std::cout << add(5.5, 10.5) << std::endl; // 编译错误,double不是integral类型
}

概念的组合:

concept还可以通过逻辑运算符组合,创建更复杂的类型约束:

  • &&:要求类型同时满足多个条件
  • ||:要求类型满足至少一个条件
  • !:要求类型不满足这个条件

示例:

template <typename T>
concept Addable = requires(T a, T b) {{ a + b } -> std::same_as<T>; // 必须支持加法运算
}template <typename T>
concept Incrementable = requires(T x) {{ ++x } -> std::same_as<T&>;  // 确保类型 T 支持自增操作并返回 T&{ x++ } -> std::same_as<T>;   // 确保类型 T 支持后置自增操作并返回 T
};template <typename T>
concept IncrementableAddable = Incrementable<T> && Addable<T>;template <IncrementableAddable T>
void incrementAndAdd(T& x, T y) {++x;x = x + ;y;std::cout << x << std::endl;
}int main() {int a = 5;incrementAndAdd(a, 10); // 有效
}
关键字:建设网站公司选哪家好_营销型网站建设都具有哪些优势_站长之家音效_南和网站seo

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: