boost::noncopyableのEBO問題

EBOについてはkmonos.netさんの解説が非常に参考になります。

class A : boost::noncopyable {};
class B : boost::noncopyable { A a; };

now sizeof(B)==2 instead of the expected 1. To fix it, we have to change
the interface (or at least allow an alternative interface). Example with
the interface I'd like to suggest:

class A : boost::noncopyable_<A> {};
class B : boost::noncopyable_<B> { A a; };

now sizeof(B)==1, as expected.

http://www.nabble.com/noncopyable-EBO-problem--tf3848065.html#a10899161
via: d:id:mb2sync:20070622

あとで書く(解説)

個人的な結論としては、この1 byteが致命的になるような場合って殆どないと思うので、気をつけておけば無問題。