copy
MC++D を最初に読んで感動した Copy に関するくだりを(やっと)実装してみた。BitBlast とかいう、謎の API の替わりに std::mecpy で。これだけでも、かなり使えるとおもうんだけど。標準コンテナとPODの両方気にせず同じ Syntax で書けるのは精神的に良いです。
PODだと
struct POD; POD src[N], dest[N]; Nevil::Copy(src, &src[N], dest);
標準コンテナだと
std::list<foo> src, dest Nevil::Copy(src.begin, src.end, std::back_inserter(dest));
標準コンテナ用に template 関数をでっちあげて
namespace Navil { template <class SrcContainer, class DestContainer> void Copy(const SrcContainer& src, DestContainer& dest) { Copy(src.begin(), src.end(), std::back_inserter(dest)); } } // namespace
こんなにすっきり
std::list<foo> src, dest Nevil::Copy(src, dest);
ざっと UnitTest したみたけど、書籍の通りの内容で問題なさそうだなぁと。