在C++中縮寫函數的狀態如何?到處搜索,我在C++概念的working draft中看到了它的一些提及。與此同時,GCC似乎與代碼沒有問題,像C++中縮寫函數的狀態是什麼?
#include <iostream>
auto foo(auto x) {
std::cout << x << std::endl;
}
int main() {
foo(1);
foo(1.2);
}
現在,我要是有-Wpedantic
編譯,我得到警告:
g++ -std=c++14 -Wpedantic test08.cpp -o test08
test08.cpp:3:9: warning: ISO C++ forbids use of 'auto' in parameter declaration [-Wpedantic]
auto foo(auto x) {
^
告訴我,縮寫功能都沒有完全在標準中。因此,他們關於C++標準和普通C++編譯器的現狀如何?
沒有有在C++ 14標準沒有這樣的事情。你甚至可以在[標準草案]中檢查自己(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3797.pdf)。 –
這將由Concepts TS添加。注意,它也允許你寫'auto foo(std :: vector const&v)'這樣的東西 - 畢竟,模板參數推導和'auto'的規則是相同的 - 模初始化列表。 –
你似乎回答了你自己的問題:他們不在當前的標準中,而是在概念提案中。 – interjay