C++20/21新特性

一、概念(Concepts):为模板编程提供了更清晰的约束和检查机制。

template <typename T>
concept Integral = std::is_integral_v<T>;  // Integral约定类型T必须是整形
// std::is_integral_v<T>  等价于 std::is_integral<T>::value  是一个bool值
template <typename T>
concept MyCon = requires(T a) {
  {a+1} -> std::convertible_to<T>;
  {a-1} -> std::convertible_to<T>;
}
template<typename T>  
concept Incrementable = requires(T t) {  
    ++t;  
};  
template<typename T>  
concept HasSize = requires(T t) {  
    { t.size() } -> std::same_as<std::size_t>;  
}; 
// concept的使用方式一
template<HasSize T> void printSize(const T& container){   std::cout << "Size of container: " << container.size() << std::endl; }
// concept的使用方式二
template<typename T> void printSize(const T& container) requires HasSize<T> {   std::cout << "Size of container: " << container.size() << std::endl; }

二、对协程的支持:C++21正式引入了协程语法,用于编写异步代码。

三、对模块的支持:C++21开始支持模块,用于替代传统的头文件和编译单元方式

posted @ 2024-04-11 17:40  fchy822  阅读(10)  评论(0编辑  收藏  举报