【发布时间】:2016-10-20 02:23:13
【问题描述】:
编辑: 它不与链接的问题重复(这也是我的)。这里所有的返回类型都是
std::vector。我不想 返回initializer-list。我要填写退回的std::vectorinitializer-list直接
让我们来看看这四种情况:
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};
};
既然 2 可以接受,为什么 4 不可接受?他们之间有什么不同?而且,最奇怪的是这是可以接受的:
//Acceptable
auto bar=[]()->std::vector<int>{
return {1};
};
std::function 和 initializer-list 有什么问题?
【问题讨论】:
-
在我 Mjölnir 之前:链接的答案如何在你眼中没有回答这个问题?
-
不一样。关于返回 Initializer-list 的问题。这里所有情况下的返回类型都是向量。
-
返回类型无关紧要。重点是不能自动推导出类型,需要手动指定。
-
@nwp 这不认为是手动指定吗? "std::function<:vector>()>"
标签: c++ c++11 vector initializer-list std-function