#include #include #include template class NCVec : boost::noncopyable { std::vector _actual; public: typedef typename std::vector::const_iterator const_iterator; const_iterator begin() const { return _actual.begin(); } const_iterator end() const { return _actual.end(); } void emplace_back(T&& t) { _actual.emplace_back(std::forward(t)); } }; void f() { NCVec a; boost::accumulate(a, 0); }