2018-03-01から1ヶ月間の記事一覧

structured bindings(構造化束縛)を自作クラスで行えるようにする

はじめに structured bindings (構造化束縛) をstd::pair<>やstd::tuple<>以外の自作のクラスに対して適用するための方法をコード例込みで解説している日本語の記事が見つからなかったのでメモを兼ねて残しておきます。 結論 std::tuple_size<T>を特殊化する st</t>…

MSVCでempty base optimizationの効かないパターンと対策

問題 2つ以上の空クラスを継承するようなクラスについて、MSVCで empty base optimization (EBO) が期待した通りに働かず、余分な領域が消費される。 struct Empty1 {}; struct Empty2 {}; // 1つの空クラスを基底に持つ struct Derived1 : Empty1 { int i; …