
具名要求
文章平均质量分 53
此页面中列出的具名要求,是 C++ 标准的规范性文本中使用的具名要求,用于定义标准库的期待。
某些具名要求在 C++20 中正在以概念语言特性进行形式化。在那之前,确保以满足这些要求的模板实参实例化标准库模板是程序员的重担。若不这么做,则可能导致非常复杂的编译器诊断。
繁星璀璨G
单身,求对象
展开
-
C++ 具名要求-布局
拥有平凡的复制、赋值及析构函数的类;拥有平凡的构造函数、赋值及析构函数的类;非虚类,仅包含其他标准布局 (standard layout) 成员,且其全部具有相同的访问控制;POD(简旧数据)结构体,与 C 的 struct 兼容;原创 2024-01-06 08:30:00 · 1015 阅读 · 0 评论 -
C++ 具名要求-基本概念-指定该对象可以析构
在对象生存期结束(例如在离开作用域时或由于 delete 表达式)时隐式调用析构函数。如类型要求表中所示的显式析构函数调用是罕见的。拜伪析构函数调用所赐,所有标量类型都满足可析构 (Destructible) 的要求,而数组类型和引用类型则不满足。注意 std::is_destructible 允许数组与引用类型。原创 2024-01-05 08:30:00 · 445 阅读 · 0 评论 -
C++ 具名要求-基本概念-指定该类型对象可以从左值赋值
指定该类型的实例可从左值表达式复制赋值。要求若满足下列条件,则类型 T 满足可复制赋值 (CopyAssignable) :类型 T 满足可移动赋值 (MoveAssignable) ,且给定T 类型的可修改左值表达式 tv,为 T 或 const T 类型的左值表达式或 const T 类型的右值表达式下列表达式必须合法且拥有其指定的效果原创 2024-01-04 08:30:00 · 406 阅读 · 0 评论 -
C++ 具名要求-基本概念-指定该类型对象可以从右值赋值
指定该类型的实例可以从右值实参赋值。类型不必为满足此类型要求而实现移动赋值运算符:按值或按 const Type& 接收其参数的复制赋值运算符会绑定到右值实参。若可移动赋值 (MoveAssignable) 类实现了移动赋值运算符,则它亦可实现移动语义,以获得“rv 在赋值后的值未指定”这一事实的优势。原创 2024-01-03 08:30:00 · 398 阅读 · 0 评论 -
C++ 具名要求-基本概念-指定该类型对象可以从左值构造
指定该类型的实例可以从左值表达式进行复制构造。C++11 前,重载了 operator& 的类并非是可复制构造 (CopyConstructible) ,从而不可用于标准库容器。C++11 开始,标准库在凡是需要对象地址时都使用 std::addressof。原创 2024-01-02 08:30:00 · 369 阅读 · 0 评论 -
C++ 具名要求-基本概念-指定该类型对象可以从右值构造
类不必为满足此要求而实现移动构造函数:接收 const T& 实参的复制构造函数也能绑定右值表达式。若可移动构造 (MoveConstructible) 类实现了移动构造函数,则它亦可实现移动语义,以从“构造后 rv 的值未指明”的事实中获利。原创 2024-01-01 18:58:37 · 443 阅读 · 0 评论 -
C++ 具名要求-基本概念-指定该类型对象可以默认构造
对于非聚合类类型的对象,必须定义公开的默认构造函数(用户定义或隐式定义),以满足可默认构造 (DefaultConstructible) 。非类对象类型的非 const 对象始终可默认构造 (DefaultConstructible) 。const 的非类类型并非可默认构造 (DefaultConstructible) 。const 的聚合类型,若其任何成员是非类类型对象,则并非可默认构造 (DefaultConstructible) 。原创 2023-12-31 23:15:19 · 463 阅读 · 0 评论 -
C++ 具名要求
此页面中列出的具名要求,是 C++ 标准的规范性文本中使用的具名要求,用于定义标准库的期待。某些具名要求在 C++20 中正在以概念语言特性进行形式化。在那之前,确保以满足这些要求的模板实参实例化标准库模板是程序员的重担。若不这么做,则可能导致非常复杂的编译器诊断。原创 2023-12-30 23:46:02 · 1082 阅读 · 0 评论