如果我有这段代码:
std::pair<Class1*,std::string> myFunc()
{
...
return std::make_pair(m_myptr, m_mystr);
}
如何使用指向Class1和std :: string的指针强制返回std :: pair?我不希望发生任何隐式转换。由于此处推导出模板参数,我该如何强制执行?
使用
简单地说明参数return std::make_pair<Class1*,std::string>(m_myptr, m_mystr);
在VS2012中抛出错误
答案 0 :(得分:3)
make_pair
的唯一目的是推导pair
的模板参数类型。如果您已经确切知道所需的pair
类型,请直接初始化,而不是调用make_pair
:
return std::pair<Class1*,std::string>(m_myptr, m_mystr);
或(C ++ 11):
return {m_myptr, m_mystr};