文字列のベクトルを返す関数があります
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> > >&)
このエラーが発生する理由と、戻り値をコンストラクターに直接渡すにはどうすればよいですか?