jjzjj

C++ : how do I use type_traits to determine if a class is trivial?

在C++0x中,我想确定一个类是否简单/是否具有标准布局,以便我可以使用memcpy()、memset()等...我应该如何使用type_traits实现下面的代码,这样我才能确认一个类型是微不足道的?templateboolisTrivialType(){boolisTrivial=???returnisTrivial;}注意:is_pod()限制太多:我希望我的类有简单的构造函数等......为了方便。补充:我认为std::is_standard_layout可能会给我我正在寻找的东西。1.如果我添加构造函数,它仍然返回true2.如果我添加一个虚方法,它返回false这是我需要确

C++ is_trivially_copyable 检查

如何检查C++类型是否可平凡复制?我有一个类,它使用具有指定模板类型T的memcpy和memcmp函数,我想为使用memcpy复制不安全的类型触发断言。有什么办法可以做到这一点(使用现有标准)? 最佳答案 不,在C++98/C++03中是不可能的。像这样的事情就是为什么被添加到C++0x。中的一些功能可以在C++03中实现,通常使用SFINAE原理,但有几个,包括std::is_trivially_copyable,只需要内置的编译器支持。 关于C++is_trivially_copya

c++ - std::is_trivially_copyable 错了吗?

考虑到cppreference和当前的c++工作草案,一个类在以下情况下是可简单复制的:每个复制构造函数都是微不足道的或被删除的每个移动构造函数都是微不足道的或已删除每个复制赋值运算符都是微不足道的或被删除的每个移动赋值运算符都是微不足道的或被删除的至少一个复制构造函数、移动构造函数、复制赋值运算符或移动赋值运算符未被删除平凡的非删除析构函数http://en.cppreference.com/w/cpp/concept/TriviallyCopyablehttp://en.cppreference.com/w/cpp/types/is_trivially_copyablehttps:

c++ - C++ 中 std::is_trivially_copy_constructible 中的琐碎操作是什么

这是std::is_copy_constructible(1)和std::is_trivially_copy_constructible文档的摘录(2)关于cppreference.com:1)CheckswhetheratypeisCopyConstructible,i.e.hasanaccessibleexplicitorimplicitcopyconstructor.Iftherequirementismet,amemberconstantvalueequaltrueisprovided,otherwisevalueisfalse.2)Sameas(1),butthecopyco

c++ - std::is_trivially_copyable - 为什么 volatile 标量类型不能轻易复制?

C++17的当前标准(我观察到C++11的类似措辞)对于可复制的类型的措辞非常困惑。我首先通过以下代码(GCC5.3.0)偶然发现了这个问题:classTrivialClass{};std::is_trivially_copyable::value;//0std::is_trivially_copyable::value;//1??让困惑变得更糟,我试图查看std::is_trivial对此事的看法,但结果更加困惑。classTrivialClass{};std::is_trivial::value;//1??std::is_trivial::value;//1很困惑,我检查了最新的C

c++ - 2016 年之前的 Valgrind : Memory still reachable with trivial program using <iostream>

编辑:我已经投票决定关闭这是不是现在不正确。2016年3月,Valgrind获得了一个选项“--run-cxx-freeres=”(默认为yes)。这将调用libstdc++函数来释放用于iostream之类的一次性分配。如果您使用的是2016年后的Valgrind和libstdc++,您将获得==9356==HEAPSUMMARY:==9356==inuseatexit:0bytesin0blocks==9356==totalheapusage:1allocs,1frees,72,704bytesallocated==9356====9356==Allheapblockswerefr

c++ - 具有已删除复制构造函数的类是否可以轻松复制?

是这个类吗:classA{public:A()=default;A(constA&)=delete;};可以简单复制吗?(至少clang似乎是这么认为的(live))尤其会Aa,b;std::memcpy(&a,&b,sizeof(A));调用未定义的行为?上下文:Thisanswer[因证明错误而被删除]加上它的评论树。 最佳答案 更新:CWG1734的建议解决方案,当前处于“就绪”状态,会将[class]/p6修改为:Atriviallycopyableclassisaclass:whereeachcopyconstructor

c++ - 具有已删除复制构造函数的类是否可以轻松复制?

是这个类吗:classA{public:A()=default;A(constA&)=delete;};可以简单复制吗?(至少clang似乎是这么认为的(live))尤其会Aa,b;std::memcpy(&a,&b,sizeof(A));调用未定义的行为?上下文:Thisanswer[因证明错误而被删除]加上它的评论树。 最佳答案 更新:CWG1734的建议解决方案,当前处于“就绪”状态,会将[class]/p6修改为:Atriviallycopyableclassisaclass:whereeachcopyconstructor

c++ - Boost.Test : Looking for a working non-Trivial Test Suite Example/Tutorial

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭7年前。ImprovethisquestionBoost.Testdocumentation并且示例似乎并没有真正包含任何重要的示例,到目前为止,我发现的两个教程here和here虽然有帮助,但都是相当基本的。我想为整个项目提供一个主测试套件,同时维护每个模块的单元测试套件和可以独立运行的装置。我还将使用模拟服务器来测试各种网络边缘案例。我使用的是Ubuntu8.04,但我会以任何Linux或Wind

c++ - Boost.Test : Looking for a working non-Trivial Test Suite Example/Tutorial

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭7年前。ImprovethisquestionBoost.Testdocumentation并且示例似乎并没有真正包含任何重要的示例,到目前为止,我发现的两个教程here和here虽然有帮助,但都是相当基本的。我想为整个项目提供一个主测试套件,同时维护每个模块的单元测试套件和可以独立运行的装置。我还将使用模拟服务器来测试各种网络边缘案例。我使用的是Ubuntu8.04,但我会以任何Linux或Wind