关于模板和函数的 auto 用法
Usage of auto concerning templates and functions
这是传递 lambda 函数和 return 包含对 lambda 函数的 n 次调用的 std::vector 的正确 C++14 样式吗?
// gen is a lambda function
auto returnN(auto gen, auto n){
std::vector< decltype(gen()) > vec;
for(auto i=0; i<n; i++){
vec.push_back( gen() );
}
return vec;
}
没有
您需要显式使用 template
,除非您的编译器允许它作为扩展。它可能会出现在 C++17 中。
Is auto as a parameter in a regular function a GCC 4.9 extension?
您可能希望通过通用参考获取 functor/function-pointer。
您忘记衰减 vector
的元素类型。
您的循环有一个 int
类型的循环变量。够不够...
template<class F>
auto returnN(F&& gen, size_t n) {
std::vector<std::decay_t<decltype(gen())>> vec; // Needs to decay
while(n--)
vec.push_back(gen());
return vec;
}
这是传递 lambda 函数和 return 包含对 lambda 函数的 n 次调用的 std::vector 的正确 C++14 样式吗?
// gen is a lambda function
auto returnN(auto gen, auto n){
std::vector< decltype(gen()) > vec;
for(auto i=0; i<n; i++){
vec.push_back( gen() );
}
return vec;
}
没有
您需要显式使用
template
,除非您的编译器允许它作为扩展。它可能会出现在 C++17 中。Is auto as a parameter in a regular function a GCC 4.9 extension?
您可能希望通过通用参考获取 functor/function-pointer。
您忘记衰减
vector
的元素类型。您的循环有一个
int
类型的循环变量。够不够...
template<class F>
auto returnN(F&& gen, size_t n) {
std::vector<std::decay_t<decltype(gen())>> vec; // Needs to decay
while(n--)
vec.push_back(gen());
return vec;
}