How do I push_back classes that disallow copy construction?

How do I do this? Is there a way to make the boost::fusion vector hold references instead of copies? Or hold pointers? class DoNotCopyConstructMe { public: DoNotCopyConstructMe() {} private: DoNotCopyConstructMe(const DoNotCopyConstructMe &ref) {} }; DoNotCopyConstructMe var1,var2,var3,var4; boost::fusion::push_back(boost::fusion::make_vector(var1,var2,var3),var4); Error 1 error C2248: 'DoNotCopyConstructMe::DoNotCopyConstructMe' : cannot access private member declared in class 'DoNotCopyConstructMe' c:\boost_1_35_0\boost\fusion\view\single_view\single_view.hpp 38

AMDG Kevin Jenkins wrote:
How do I do this? Is there a way to make the boost::fusion vector hold references instead of copies? Or hold pointers?
Use boost::ref and/or vector_tie to make it hold references. #include <boost/fusion/include/vector.hpp> #include <boost/fusion/include/vector_tie.hpp> #include <boost/fusion/include/push_back.hpp> #include <boost/ref.hpp> class DoNotCopyConstructMe { public: DoNotCopyConstructMe() {} private: DoNotCopyConstructMe(const DoNotCopyConstructMe &ref) {} }; int main() { DoNotCopyConstructMe var1,var2,var3,var4; boost::fusion::push_back(boost::fusion::vector_tie(var1, var2, var3),boost::ref(var4)); } In Christ, Steven Watanabe
participants (2)
-
Kevin Jenkins
-
Steven Watanabe