我有一个返回字符串向量的函数
std::vector<std::string> getNames()
{
std::vector<std::string> names;
names.push_back("one");
return names;
}
我有另一个带有以下签名的构造函数的类(这实际上来自 TCLAP):
ValuesConstraint(std::vector<T>& allowed);
如果我尝试执行以下操作,我会收到错误
ValuesConstraint<std::string> A( getNames() );
但不是当我执行以下操作时
std::vector<std::string> v = getNames();
ValuesConstraint<std::string> A( v );
这发生在 GCC 4.4.7 中,但不在 VS2010 中。错误如下:
error: no matching function for call to ‘TCLAP::ValuesConstraint<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::ValuesConstraint(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >)’
note: candidates are: TCLAP::ValuesConstraint<T>::ValuesConstraint(std::vector<T, std::allocator<_CharT> >&) [with T = std::basic_string<char, std::char_traits<char>, std::allocator<char> >]
note: TCLAP::ValuesConstraint<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::ValuesConstraint(const TCLAP::ValuesConstraint<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >&)
为什么会发生此错误,我该怎么做才能将返回值直接传递给构造函数?