편집 : 이것은 연결된 질문과 중복되지 않습니다. 여기에 모든 반환 유형은
std::vector
입니다. 나는 에initializer-list
을 돌려주고 싶지 않습니다. 내가initializer-list
에 의해 반환 된std::vector
을 채우려 직접std :: function에서 vector 대신 이니셜 라이저 목록을 반환하십시오.
은 우리가 그 4 사례를 보자
1)
//Acceptable
std::vector<int> foo(){
return std::vector<int>{1};
}
2)
//Acceptable
std::vector<int> foo(){
return {1};
}
3)
//Acceptable
std::function<std::vector<int>()> foo=[](){
return std::vector<int>{1};
};
4) 두 사람
//NOT Acceptable
std::function<std::vector<int>()> foo=[](){
return {1};
};
4가 허용되지 않는 이유는
허용? 그들 사이에 다른 점은 무엇입니까? 또한,이 허용하는 가장 이상한 것은 :
//Acceptable
auto bar=[]()->std::vector<int>{
return {1};
};
std::function
및 initializer-list
어떤 문제가 있습니까?
가능한 복제 (http://stackoverflow.com/questions/35361408/why-i-can-not-return-initializer-list-from-lambda) –
전 나는이 질문에 대답했다 : 당신의 눈에는 연결된 대답이 어떻게 대답하지 않습니까? –
다르다. 그 Initializer 목록을 반환에 대한 질문. 여기서 모든 경우의 리턴 타입은 벡터이다. –