C++ 11을 조금 더 알고 싶습니다. 가능한 가장 간단한 initializer_list 테스트를 작성 했으니 템플릿 내부에서 "자유"함수입니다.템플릿의 C++ 이니셜 라이저 목록
namespace mlcppl{
template<typename Tp> vector<Tp> makevec (initializer_list<Tp> initlist)
{
vector<Tp> vt;
for(Tp x : initlist)
{
vt.insert(vt.end(), x);
}
return vt;
}
}
여기가 호출되는 경우입니다 : 내가 (꽤 형식에 대한 연타 ++) 컴파일 할 때마다, 와 나는 여기
/home/alex/repo/mine/mlcppl/test/utiltest1.cc:16:3: error: no matching function for call to 'makevec'
mlcppl::makevec<string> ({"alex", "herrmann"});
는 코드이 오류가
#include <util.hh>
int main()
{
vector<string> vc;
vc = makevec<string> ({"alex", "herrmann"});
return 0;
}
나는 이것이 일어날 이유를 전혀 모른다. 어떤 제안이 있나?
이 g 작동
네임 스페이스 한정자를 사용하여'makevec'를 호출하고 있습니다. 'makevec' 구현은'mlcppl' 네임 스페이스에 실제로 정의되어 있습니까? 귀하의 본보기는 그것을 보여주지 않습니다. – plasma
예, 잠시만 기다려주세요. 게시물에 전체적인 의미를 넣으십시오. – alexmherrmann
코드가 잘 작동해야합니다. clang의 버전은 무엇입니까? 또한 makevec의 본문은 단순히'return initlist; '로 대체 될 수 있습니다. – bames53