// C++ Concepts 示例代码
#include <concepts>
#include <iostream>
// 定义一个概念:要求类型 T 必须支持加法操作
template<typename T>
concept Addable = requires(T a, T b) {
{ a + b } -> std::same_as<T>;
};
// 定义一个模板函数,使用 Addable 概念进行约束
void add_and_print(Addable auto a, Addable auto b) {
std::cout << "Result: " << a + b << std::endl;
}
int main() {
// 调用函数,传递整数类型
add_and_print(3, 5); // 输出: Result: 8
// 调用函数,传递浮点数类型
add_and_print(3.5, 2.1); // 输出: Result: 5.6
return 0;
}
Concept 定义:
Addable 是一个概念(concept),它要求类型 T 必须支持加法操作,并且加法的结果类型必须与 T 相同。模板函数:
add_and_print 是一个模板函数,使用了 Addable 概念来约束模板参数。这意味着只有满足 Addable 概念的类型才能作为参数传递给该函数。main 函数:
main 函数中,我们调用了 add_and_print 函数两次,分别传递了整数和浮点数类型的参数。由于这些类型都满足 Addable 概念的要求,因此可以成功编译并运行。通过使用 C++20 的 Concepts 功能,我们可以更清晰地表达模板参数的要求,从而提高代码的可读性和健壮性。
上一篇:c++ dynamic_cast
下一篇:c++多线程实现的四种方式
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站