How to create a container of noncopyable elements

后端 未结 3 1898
梦谈多话
梦谈多话 2021-01-18 11:44

Is there a way use STL containters with non-copyable elements?

something like this:

class noncopyable
{
    noncopyable(noncopyable&);
    const          


        
相关标签:
3条回答
  • 2021-01-18 12:08

    One option is to create a list of pointers to the elements (preferrably a shared_ptr). This is not exactly what you want but it will get the job done.

    0 讨论(0)
  • 2021-01-18 12:22

    No, non-copyable elements can't be in C++ container classes.

    According to the standard, 23.1 paragraph 3, "The type of objects stored in these components must met the requirements of CopyConstructible types (20.1.3), and the additional requirements of Assignable types."

    0 讨论(0)
  • 2021-01-18 12:22

    Another option is to use the Boost Pointer Container library. This acts much like a standard container of std::auto_ptrs would, were such a thing possible: it retains exclusive ownership of its elements, and it cannot be copied. It also has less overhead than a standard container of shared_ptrs.

    0 讨论(0)
提交回复
热议问题