NULLポインタの定義
0はNULLではない. NULLと書く.C: ((void*)0) C++98: (0) C++11+: nullptr
__cplusplus
msvcは, 199711L//C++98 __cplusplus = 199711L //C++11 __cplusplus = 201103L
メンバイニシャライザの初期化順序
宣言順で初期化される. 下記では`a0_`, `a1_`の順.故に, メンバイニシャライザと宣言の順序は一致させる.
class Hoge
{
public:
Hoge()
:a1_(1)
,a0_(0)
{}
private:
int a0_;
int a1_;
};
Trivially Copyable
memcpyでコピーできる型のことを, Trivially Copyableな型をいいます.trivialであるとは, ユーザ定義でなくdeleteされていないということ,
Trivially Copyableの条件は以下だそうです.
- trivialでない, コピーコンストラクタ, ムーブコンストラクタ, コピー代入演算子, ムーブ代入演算子を持たないこと.
- trivialなデストラクタを持っていること.
static_assert(std::is_trivially_copyable<T>::value == true, "T must be trivially copyable.");cpprefjp is_trivially_copyable
ベクトルや行列の配列などは, memcpyですませたいことが多いのでTrivially Copyableにしておきます.
0 件のコメント:
コメントを投稿