C++ C++;:为什么可以';t函数';参数是自动的吗?

C++ C++;:为什么可以';t函数';参数是自动的吗?,c++,templates,c++11,C++,Templates,C++11,例如,以下代码将不被接受 void foo(auto i){ cout<<(i+1); } void foo(自动i){ 您可以编写auto-foo=[](auto-i){考虑到当前的解决方案并不完美(例如,它不能与constepr一起使用),将来可能无法编写但是现在,有多态的lambda。因为标准不允许。当前TS的工作草案允许这样做。注意C++中的 Auto 是相当新的,并且使用 Auto 函数参数更是如此(仅在几周前才被批准为标准C++)。.C++14中已经采用了函数的

例如,以下代码将不被接受

void foo(auto i){
    cout<<(i+1);
}
void foo(自动i){

您可以编写
auto-foo=[](auto-i){考虑到当前的解决方案并不完美(例如,它不能与
constepr
一起使用),将来可能无法编写但是现在,有多态的lambda。因为标准不允许。当前TS的工作草案允许这样做。注意C++中的<代码> Auto <代码>是相当新的,并且使用<代码> Auto <代码>函数参数更是如此(仅在几周前才被批准为标准C++)。.C++14中已经采用了函数的推断返回类型,这离此不远,但我可以看出这与概念提案有何重叠,因此解决这些问题的方法可能比在此处使用
auto
更好…将此作为注释编写并投票结束,因为这主要是基于意见的(除非你想要的答案是因为标准不允许,这是一个硬事实。@Mattmcnab:是的,这在C++11中是不可能的。但是现在……而且clang和gcc已经实现了几乎所有的功能。
template<typename T>
void foo(T i){
    cout<<(i+1);
}