msvc-15.6: fold expressions не поддерживаются :(
От: rg45 СССР  
Дата: 30.03.18 09:11
Оценка:
Накатил 2017-ю студию, твердо рассчитывая на поддержку fold expressions. И такой облом
--
Не можешь достичь желаемого — пожелай достигнутого.
Re: msvc-15.6: fold expressions не поддерживаются :(
От: Gaia  
Дата: 30.03.18 13:24
Оценка: 21 (1)
Здравствуйте, 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
Отредактировано 30.03.2018 13:28 Gaia . Предыдущая версия . Еще …
Отредактировано 30.03.2018 13:25 Gaia . Предыдущая версия .
Re[2]: msvc-15.6: fold expressions не поддерживаются :(
От: Gaia  
Дата: 30.03.18 13:26
Оценка:
...deleted
Отредактировано 30.03.2018 13:27 Gaia . Предыдущая версия .
Re[2]: msvc-15.6: fold expressions не поддерживаются :(
От: rg45 СССР  
Дата: 30.03.18 13:33
Оценка:
Здравствуйте, 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>


Спасибо огромное! То есть, всего-то дополнительные скобки нужно ставить. Ну с этим можно мириться.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[3]: msvc-15.6: fold expressions не поддерживаются :(
От: _NN_ www.nemerleweb.com
Дата: 05.04.18 09:17
Оценка: 14 (1)
Здравствуйте, 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
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.