【发布时间】:2012-04-18 07:51:01
【问题描述】:
auto 在C++11 中是如何实现的?我试过关注,它在C++11
auto a = 1;
// auto = double
auto b = 3.14159;
// auto = vector<wstring>::iterator
vector<wstring> myStrings;
auto c = myStrings.begin();
// auto = vector<vector<char> >::iterator
vector<vector<char> > myCharacterGrid;
auto d = myCharacterGrid.begin();
// auto = (int *)
auto e = new int[5];
// auto = double
auto f = floor(b);
我想检查一下如何使用普通的C++ 来实现这一点
【问题讨论】:
-
它把右边的东西的类型放在左边。
-
它采用与decltype()相同的类型,并使用它而不是auto
-
"我想检查一下如何使用平面 C++ 实现这一点" 如果您的编译器足够新,这是纯 C++。也就是说,它是标准化的,因此没有什么特别或与众不同的地方。
-
I want to check how this can be achieved using plane C++你不能用“plane C++”“实现”这个;它是 C++11 的语言特性,而 C++03 缺乏。我认为 Boost 有一些宏,但不是那么好。 -
我认为您对标准术语感到困惑:C++11 是当前的 C++ 标准。 C++03 是过去的 C++ 标准。如果您现在说
C++,则与您说C++11相同。十年后,过去的标准可能是C++11,而现在的标准可能是C++18左右,你然后会调用C++。