将包含不可复制/可移动对象的struct添加到std :: map

时间:2016-09-04 00:29:07

标签: c++ c++11 stl

我有这个MCVE:

#include <atomic>
#include <map>
#include <string>

struct foo
{
    int intValue;
    std::atomic_bool bar;

    foo( int intValue ) : intValue( intValue ) {};
};

std::map<std::string, foo> myMap;

int main()
{
    myMap.emplace( "0",  1234 );
}

它无法编译,因为std::atomic既不可复制也不可移动。

我的问题:

如何将包含不可复制/可移动对象的类添加到std::map容器中?

1 个答案:

答案 0 :(得分:3)

怎么样?
myMap.emplace(std::piecewise_construct,
              std::forward_as_tuple("0"),
              std::forward_as_tuple(1234));