c – std :: piecewise_construct语法如何工作?

前端之家收集整理的这篇文章主要介绍了c – std :: piecewise_construct语法如何工作?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
关于std :: piecewise_construct与std :: map一起使用时,我有点困惑.例:
std::map<std::string,std::string> m;

// uses pair's piecewise constructor
m.emplace(std::piecewise_construct,std::forward_as_tuple("c"),std::forward_as_tuple(10,'c'));

我不确定当使用piecewise_construct时,emplace()知道如何以不同方式处理这种类型的构造.不应该是:std :: piecewise_construct(std :: forward_as_tuple(“c”),std :: forward_as_tuple(10,’c’))?如何使用逗号,我没有看到重载的逗号运算符或一个特殊的重载过程来处理分段然后变量args(如图here所示).

解决方法

std :: map :: emplace使用传递给emplace(转发它们)的参数直接调用构造函数,类型为std :: map< std :: string,std :: string> :: value_type(这是std的typedef: :pair< const std :: string,std :: string>).

std::pair has the constructor taking std::piecewise_construct_t (the type of the std::piecewise_construct)

猜你在找的C&C++相关文章