Stanislav
было дело, надо вспомнить)
Stanislav
чето не записал и не закоммитил ничерта
Stanislav
ну тут имеется ввиду из консоли, qt аппы
Stanislav
а причем походу они баг таки не пофиксили )
Stanislav
https://bugreports.qt.io/browse/QTBUG-51700
Stanislav
я видим один их использовал для билда под андроид, или что?
Sergey
Ребят, есть ли какой нибудь удобный способ без написания промежуточных метаструктур эмулировать на gcc это: https://godbolt.org/g/vjCnH9 ?
Sergey
в примере же все понятно, разве нет?
Sergey
мне нужен гетерогенный контейнер из функторов, типы входного аргумента которых берутся из variadic
Крылатый
А можно прямую ссылку, пжлст?
Stanislav
как бы твой код не работает на гцц
Sergey
О, знакомая херовень)
я написал, всё работало до тех пор, пока не решил перейти на gcc 7.1. Сейчас сижу и переписываю подобные штуки.
Sergey
как бы твой код не работает на гцц
Так в этом и вопрос. Как минимальными усилиями эмулировать это на gcc
Dmitry
а почему на 7.1 перестало работать?
Stanislav
там вроде подсказка есть )
Stanislav
Крылатый
А можно уже прямую ссылку получить?
Крылатый
А то с работы прокси не пускает через сокращялки.
Dmitry
Я думал в gcc уже запилили. В clang такая фича уже давно.
Sergey
Это не подсказка, а описание ошибки. Если бы было всё просто, я бы сюда не писал) У меня есть идеи по эмуляции этой штуки через метаструктуры, но не хочу ради этого писать костыли
Sergey
А то с работы прокси не пускает через сокращялки.
https://godbolt.org/#g:!((g:!((g:!((h:codeEditor,i:(fontScale:0.8957951999999999,j:1,source:'%23include+%3Cfunctional%3E%0A%23include+%3Ctuple%3E%0A%23include+%3Cstring%3E%0A%0Ausing+namespace+std%3B%0A%0Atemplate%3Ctypename...+Ts%3E%0Astruct+test_struct%0A%7B%0A++++test_struct()%0A++++%7B%0A++++++++funcs+%3D+make_tuple(%5B%5D(Ts+val)+%7B+return+decltype(val)%7B%7D%3B+%7D...)%3B%0A++++%7D%0A%0A++++tuple%3Cfunction%3CTs(Ts)%3E...%3E+funcs%3B%0A%7D%3B%0A%0Aint+main()%0A%7B%0A++++test_struct%3Cint,+double,+string%3E+test%3B%0A++++return+0%3B%0A%7D'),l:'5',n:'0',o:'C%2B%2B+source+%231',t:'0')),k:33.333333333333336,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:compiler,i:(compiler:clang350,filters:(b:'0',commentOnly:'0',directives:'0',intel:'0'),options:'-O0+-std%3Dc%2B%2B14',source:1),l:'5',n:'0',o:'x86-64+clang+3.5+(Editor+%231,+Compiler+%231)',t:'0')),k:33.333333333333336,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:compiler,i:(compiler:g71,filters:(b:'0',commentOnly:'0',directives:'0',intel:'0'),options:'',source:1),l:'5',n:'0',o:'x86-64+gcc+7.1+(Editor+%231,+Compiler+%232)',t:'0')),k:33.33333333333333,l:'4',n:'0',o:'',s:0,t:'0')),l:'2',n:'0',o:'',t:'0')),version:4
Dmitry
где-то баг был на багзилле, позже попробую откопать
Крылатый
Эм.
Крылатый
Что-то мне кажется, что так нельзя.
Sergey
Что-то мне кажется, что так нельзя.
По крайней мере на кланге начиная с версии 3,5 можно
Крылатый
Это ничего не говорит. Стандартное ли это поведение?
Stanislav
где-то баг был на багзилле, позже попробую откопать
где то у тебя баг, потому что стоит поставить c++17 и т оже failed
Stanislav
у кланга
Sergey
Это ничего не говорит. Стандартное ли это поведение?
Хз. В своё время написал то, что было на уме, заработало. Сейчас проблемы. Видимо не стандартное, хотя люди выше пишут, что это баг у gcc
Sergey
у кланга
потому что clang версии 3,5 выбран
Stanislav
потому что clang версии 3,5 выбран
есть подозрения что это баг шланга
Sergey
есть подозрения что это баг шланга
Не баг, а extension тогда уж. У меня тоже много всяких подозрений, но нужно гуглить
Stanislav
Не баг, а extension тогда уж. У меня тоже много всяких подозрений, но нужно гуглить
ну я говорю, попробуй С++17 поставить тоже не скомпилится, только ероры чет не показывает
Sergey
ну я говорю, попробуй С++17 поставить тоже не скомпилится, только ероры чет не показывает
пфф. Там ведь не текущий транк кланга (5 версия). Ставь флаг std=c++1z
Крылатый
Я не понимаю, откуда ему разворачивать эти три ебучих точки?
Sergey
да даже если 4.0 поставить
ещё раз повторяю, ты флаг неправильный ставишь) прочти моё сообщение ещё раз)
Stanislav
а, сорян
Stanislav
запутался уже с этим тремя компилерами) думал у шланга тоже С++17 уже
Stanislav
нууу, либо баг в гцц
Stanislav
на мсвц тоже компилится
Sergey
на мсвц тоже компилится
блеать, значит точно баг, раз компилится ((
Stanislav
в годболте тоже мсвц есть если чо
Stanislav
Sergey
аа, спс. Даже не смотрел, если честно
Sergey
значит придётся опять костылировать. метакостылировать, что ещё хуже, так как через пару деньков уже не прочитаешь, что написал
Stanislav
чето не ясное ) дажне на 8.0 гцц тоже самое
Stanislav
https://wandbox.org/permlink/71JVrvkhlAFiybqY
Stanislav
даже скорей это libstd++ баг кстати подумалось вдруг
Sergey
даже скорей это libstd++ баг кстати подумалось вдруг
Почему это? Распаковка вариадиков - языковая фича
Sergey
Да и тот же кланг у меня на libstd++ работал всёё время
Stanislav
https://stackoverflow.com/a/39711104/1274305
Stanislav
вроде чтото похожее
Sergey
да, причина одна. gcc видит лямбду как один стейтмент, как написано в ответе
Stanislav
Почему это? Распаковка вариадиков - языковая фича
а, там был года полтора назад забавный баг
Stanislav
но там с форматированием времени свзяанный
Stanislav
в libstd++ был баг, libc++ нет
Stanislav
даже хз, пофиксили его или нет
Sergey
А вот и сам баг репорт https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47226
Stanislav
Importance: P3 normal
Stanislav
понятно
Stanislav
чинить его будут никогда видимо
Berkus
Berkus
Reported: 2011-01-08 20:58 UTC
Stanislav
ну значит скоро уже!
я полтора года в кути жду починку бага P3 :)
Stanislav
проще самому закоммитить
Stanislav
а вот гцц это такое
Berkus
в гцц они сами не могут разобраться чего нахуевертили, так что да
Stanislav
а еще там никто не делает корутины
Stanislav
Dmitry
@JegernOUTT https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64488
Vladislav
http://www.cpp-jobs.com/
Berkus
йей
Berkus
а кто мейнтейнер?