从自动输入参数推导出 return 类型
deducing return type from auto input argument
为什么下面编译不通过?
编译器不能从输入中推断出 return 类型吗?
没有完全按照显示的类型转换错误进行操作。
auto func(auto &x)
{
return x[0];
}
int main()
{
vector<int> v = { 1, 2, 3};
(void)func(v);
}
$ g++ -std=c++1z auto.cc
auto.cc: In instantiation of ‘auto func(auto:1&) [with auto:1 = std::vector<int>]’:
auto.cc:15:16: required from here
auto.cc:8:14: error: could not convert ‘(& x)->std::vector<_Tp, _Alloc>::operator[]<int, std::allocator<int> >(0ul)’ from ‘__gnu_cxx::__alloc_traits<std::allocator<int> >::value_type {aka int}’ to ‘std::vector<int>’
return x[0];
auto
作为函数参数类型 不是标准 C++。尽管如此,g++ 7 (svn)
还是接受了... and your code compiles.
为什么下面编译不通过? 编译器不能从输入中推断出 return 类型吗?
没有完全按照显示的类型转换错误进行操作。
auto func(auto &x)
{
return x[0];
}
int main()
{
vector<int> v = { 1, 2, 3};
(void)func(v);
}
$ g++ -std=c++1z auto.cc
auto.cc: In instantiation of ‘auto func(auto:1&) [with auto:1 = std::vector<int>]’:
auto.cc:15:16: required from here
auto.cc:8:14: error: could not convert ‘(& x)->std::vector<_Tp, _Alloc>::operator[]<int, std::allocator<int> >(0ul)’ from ‘__gnu_cxx::__alloc_traits<std::allocator<int> >::value_type {aka int}’ to ‘std::vector<int>’
return x[0];
auto
作为函数参数类型 不是标准 C++。尽管如此,g++ 7 (svn)
还是接受了... and your code compiles.