运行这个简单的程序时,根据编译器的不同,会观察到不同的行为。
\n它true在由 GCC 11.2 编译时以及false由带有 的 MSVC 19.29.30137 编译时打印(两者都是今天的最新版本)。
#include <type_traits>\n#include <iostream>\n\nstruct S {\n int a;\n \n S() = delete;\n S(S const &) = delete;\n S(S &&) = delete;\n S &operator=(S const &) = delete;\n S &operator=(S &&) = delete;\n ~S() = delete;\n};\n\nint main() {\n std::cout << std::boolalpha;\n std::cout << std::is_trivially_copyable_v<S>;\n}\nRun Code Online (Sandbox Code Playgroud)\n相关引用(来自最新的C++23工作草案N4901):
\n给定 20.15.5.4 [meta.unary.prop],如果 T 是如 6.8.1/9 [basic.types.general] 中定义的std::is_trivially_copyable_v<T>a,则定义为 true :trivially copyable type
\n算术类型 …