'internalPath'(类型'std :: string {aka std :: basic_string <char>}')输入'std :: basic_string <char>&amp;&amp;'</char> </char>

时间:2015-02-26 13:42:05

标签: c++ string c++11 gcc

我在函数

的代码行下面运行
string internalPath(os.str());
   m_tags.insert(make_pair<string, TagConfig >(internalPath, tagConfig ));
error: no matching function for call to ‘make_pair(std::string&, const wicom::TagConfig&)’
m_tags.insert(make_pair<string, TagConfig >(internalPath, tagConfig ));
                                                                    ^

编译器g ++ = C ++ 14

1 个答案:

答案 0 :(得分:2)

您永远不应为std::make_pair明确指定模板参数 - 它用于推断它们,因为它使用完美转发。要么摆脱它们:

m_tags.insert(make_pair(internalPath, tagConfig ));

或者如果您需要明确指定它们,请直接使用std::pair

m_tags.insert(pair<string, TagConfig >(internalPath, tagConfig ));

作为旁注,您似乎有using namespace std;某处。我建议你摆脱它,它比其他任何东西都混淆了。