相关疑难解决方法(0)

什么是聚合和POD以及它们如何/为何特殊?

常见问题解答涉及聚合和POD,并涵盖以下材料:

  • 什么是聚合
  • 什么是POD(普通旧数据)?
  • 它们有什么关系?
  • 它们如何以及为何特别?
  • C++ 11有什么变化?

c++ aggregate standard-layout c++11 c++17

525
推荐指数
6
解决办法
13万
查看次数

为什么类可以轻松复制所有私有特殊成员函数?

代码如下:

#include <iostream>
#include <type_traits>

class A
{
    A() = default;
    A(const A&) = default;
    A(A&&) = default;
    A& operator=(const A&) = default;
    A& operator=(A&&) = default;
    ~A() = default;
    int a;
};

int main()
{
    std::cout << std::boolalpha <<
        std::is_trivially_copy_assignable_v<A> << " " <<
        std::is_trivially_copy_constructible_v<A> << " " <<
        std::is_trivially_move_assignable_v<A> << " " <<
        std::is_trivially_move_constructible_v<A> << " " <<
        std::is_trivially_destructible_v<A> << " " <<
        std::is_trivially_copyable_v<A> << "\n";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

And the output is false false false false false …

c++ language-lawyer c++20 trivially-copyable

14
推荐指数
2
解决办法
1357
查看次数

std :: is_trivially_copyable要求

c ++标准(和几个SO 答案)声明要符合条件is_trivially_copyable<T>,类型T必须具有:

  1. 默认的析构函数,
  2. 没有虚拟功能,
  3. 没有虚拟基类.

(这些不是唯一的要求,但问题仅针对这些问题)

有人可以解释为什么?我没有看到违反这3个中的任何一个如何使得Tmemcpy不安全.

c++ type-traits c++11

2
推荐指数
1
解决办法
436
查看次数