【发布时间】:2015-06-09 11:54:44
【问题描述】:
我知道 auto 关键字的含义已经从 C++11 完全改变了。但是最近我写了一个以下简单的程序,当使用=std=c++98 选项编译时,它可以很好地编译和运行。
#include <iostream>
void fun(auto int a)
{
a=3;
std::cout<<a<<'\n';
}
int main()
{
fun(3);
}
Orwell Dev C++ IDE 给我如下警告:
[Warning] 'auto' changes meaning in C++11; please remove it [-Wc++0x-compat]
那么,将auto 用于函数参数是否可以,或者我不应该像上面的程序那样使用auto 来保持与C++11 的兼容性?
【问题讨论】:
-
另一个问题是“为什么你会在任何版本的 C++ 中使用
auto?”我想不出原因。 -
auto int应该是什么意思? -
我能想到的唯一原因是,如果您有代码,如果 C++98/C++03 之间的静默变化之一,您特别需要在 C++11 模式下发出错误而 C++11 破坏了代码。但是,在这种情况下,如果使用 C++11,则带有
#error的#if条件会更好地提高可读性。