Накатил 2017-ю студию, твердо рассчитывая на поддержку fold expressions. И такой облом
Здравствуйте, rg45, Вы писали:
R>Накатил 2017-ю студию, твердо рассчитывая на поддержку fold expressions. И такой облом
С багами, но поддерживается. Нужен ключик /std:c++17 или в настройках проекта С/С++, Language, C++ Language standard
//fold.cpp
#include <iostream>
template<typename... Args>
bool all(Args... args) { return (... && args); }
int main()
{
std::cout << std::boolalpha << all(true, true, true, false);
}
e:\Temp>cl /EHsc /std:c++17 fold.cpp && fold
Microsoft (R) C/C++ Optimizing Compiler Version 19.13.26129 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
fold.cpp
Microsoft (R) Incremental Linker Version 14.13.26129.0
Copyright (C) Microsoft Corporation. All rights reserved.
/out:fold.exe
fold.obj
false
Здравствуйте, Gaia, Вы писали:
G>С багами, но поддерживается. Нужен ключик /std:c++17 или в настройках проекта С/С++, Language, C++ Language standard
G>G>//fold.cpp
G>#include <iostream>
G>template<typename... Args>
G>bool all(Args... args) { return (... && args); }
G>int main()
G>{
G> std::cout << std::boolalpha << all(true, true, true, false);
G>}
G>
Спасибо огромное! То есть, всего-то дополнительные скобки нужно ставить. Ну с этим можно мириться.
Здравствуйте, rg45, Вы писали:
R>Спасибо огромное! То есть, всего-то дополнительные скобки нужно ставить. Ну с этим можно мириться.
С дополнительными скобками нужно завязывать начиная с C++14
#include <iostream>
#include <type_traits>
using namespace std;
int i;
decltype(auto) f() { return i; }
decltype(auto) g() { return (i); } // !
int main() {
cout<< is_same< decltype(f()), int>::value; // 1
cout<< is_same< decltype(g()), int&>::value; // 1
return 0;
}
https://ideone.com/JsXAnO