Matway
Тут помогают, только когда пишешь примерно так: Я сделал вот это, ожидаю вот это, а получаю вот это - что не так?
Так написать - 90% работы по решению проблемы. Не все на такое способны. А поскольку ещё 90% проблем решаются, пока ты такое пишешь, то такие вопросы редко можно увидеть.
Aleksei
Да, еще другой тип опросов. Мне надо сделать то-то, куда посмотреть?
Sergey
Ребят, как выбрать путь до конкретного с++stdlib в cmake? По умолчанию у меня cmake берет каталог со старшей версией по пути /usr/include/c++ . Может есть какая то environment переменная или cmake переменная? (сам искал, не нашёл)
Sergey
Или может опция для компилятора есть?
Grigory
Ребят, как выбрать путь до конкретного с++stdlib в cmake? По умолчанию у меня cmake берет каталог со старшей версией по пути /usr/include/c++ . Может есть какая то environment переменная или cmake переменная? (сам искал, не нашёл)
Если не ошибаюсь, то компилятор в первую очередь ищет в системных директорих заголовки стандартной библиотеки, например для g++-<version> заголовки будут найдены в /usr/include/c++/<version> (точный путь можно узнать с помощью g++ -v). Можно поставить несколько версий g++, они поставят нужные dev пакеты библиотеки libstdc++ и в CMakeLists.txt в начале указать путь к нужной версии g++ через CMAKE_CXX_COMPILER или же через переменную CXX
Igor
(некропост но тем не менее) в VS2017, вроде бы, их анонсировали ещё в прошлом году / начале этого, а сейчас уже якобы и std на модули начинают переводить - никто не в курсе, как оно там?
MrSmith
Там вроде проблема у них с дерективами компилятора, с одной стороны стул с сломанной совместимостью и удобствами с другой стул с совместимость и кривым решением, вроде бы все идет к посадке на второй, но в текущем стандарте вроде как снова не договорилилсь
Nikolai
Не уж то всем так сложно прийти к разумному и взвешеному решению?
Nikolai
Вот понапишут, а потом думай как собирать весь этот код под разными платформами
Nikolai
Нафига так делать - не пойму
MrSmith
Мне кажется, на наш век мы так и не дождемся пакетов в стандарте
Igor
Нафига так делать - не пойму
каждый считает что он - правее и его фича - нужнее
Nikolai
ох уж эти сказки...
MrSmith
О мой бог, сколько они завозили filesystem?
Igor
в сторону квантовой механики, или что-нибудь дельное из буста подтянуть?
Nikolai
ты попробуй это пропишнуть. Копиталисты прото так ничего не втюхивают
MrSmith
А по факту просто из буста преенесли
MrSmith
Вот когда концепты и пакеты ждать, меня только пакеты на самом деле волнуют но все же. Можешь кинуть referense по пакетам новый или они не запилили?
Igor
ну из последнего на чем я подгорал вспоминаются бустовые алгоритмы для строк
MrSmith
Лол, какие контракты? Им снова чисто виртуальных классов не хватило?
Igor
и как скоро можно этого ждать?)
Dogma
ну хоть что то с бустом и питоном продвинулось
Dogma
вернулись опять к ошибке ::hypot has not been declared
Dogma
:/
🐙 Antony
А по факту просто из буста преенесли
Не совсем. В стандарте сделали так, чтобы filesystem модно было использовать на большем количестве платформ (например zOS), подправили взаимодействие с другими частями стандартной библиотеки, добавили кеширование некоторых операций, пофиксили кучу мелких недочётов... Так что работа там проделана огромная
MrSmith
А чего с рефлекшенами то они упоролись, у них новый паблик референс есть или когда ждать, не обессутте я тюлень
MrSmith
Интересненько, пойду порою пейперы
MrSmith
Use the link in the left sidebar to download a PDF of the current working draft (free). This is the easiest way to get the latest prebuilt PDF. However, you can also…
MrSmith
Ниче не нашел
MrSmith
Придется из git собирать
MrSmith
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4659.pdf
MrSmith
А нет я даун просто
MrSmith
2017-03-21 <- это старый, или я не там ищу?
MrSmith
Хм... Ни че и в гит версии не нашел
MrSmith
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0256r0.pdf
MrSmith
Кто хочет ознакомиться
Sergey
Перешёл на gcc 7.1 - теперь проект не собирается (собирался на шестерке). Называется - придумал себе работу). Причем отвалились ranges, некоторые sfinae (куча ошибок на ambigious call), ещё парочка библиотек (типа json)
Sergey
LD_LIBRARY_PATH?
опция для clang nostdinc++ вкупе с указанием своей директории через -I<path>
Grigory
В справке gcc пишут, что nostdinc используется в основном в случаях наподобие сборки ядра или ст. библиотеки. А как IDE после этих опций нашла заголовки?
Sergey
В справке gcc пишут, что nostdinc используется в основном в случаях наподобие сборки ядра или ст. библиотеки. А как IDE после этих опций нашла заголовки?
Там по ссылке, которую я привел, все написано. -I<path> и компилятор просто думает, что stdlib - обычная библиотека
Sergey
посоны, а как написать рекурсивную лямбда-функцию?
Sergey
auto del_rec = []( NodePtr &node ) -> void { for ( int i = node->getNumChildren()-1; i >= 0; —i ) { del_rec( node->getChild(i)); } node->grab(); };
Sergey
вот такая вот штука, приводит к такой ошибке
Sergey
error C3493: 'del_rec' cannot be implicitly captured because no default capture mode has been specified
Крылатый
Через захват контекста, очевидно
Sergey
не понял
Sergey
[this] - не помогает, да и не нужен он
Крылатый
[del_rec]
Berkus
посоны, а как написать рекурсивную лямбда-функцию?
никак, ты не сможешь ее использовать
Sergey
[del_rec]
не получается так
Крылатый
никак, ты не сможешь ее использовать
Ну ваще возможно. Хоть и говняно.
Berkus
возможно да, но очень говняно получается
Sergey
std::function<void(NodePtr &node)> del_rec = [&del_rec]( NodePtr &node ) { for ( int i = node->getNumChildren()-1; i >= 0; —i ) { del_rec( node->getChild(i)); } node->grab(); };
Sergey
так тоже неверно
Sergey
коллеги говорят - в 11 стандарте вообще никак
Berkus
да и дальше тоже не очень красиво выходит
Berkus
проблема в том что ты не можешь закапчурить ссылку на лямбду
Berkus
надо делать еботу типа Holder<function> f = lambda; а в лямбде капчурить ссылку на холдер и оттуда выдирать функцию
Sergey
ну вот на хабре приводят "типа рабочий" код
Sergey
std::function<int(int)> lfib = [&lfib](int n) {return n < 2 ? 1 : lfib(n-1) + lfib(n-2);};
Berkus
ну вот на хабре приводят "типа рабочий" код
и оно таки работает https://wandbox.org/permlink/BOsNSutjjkzOKwNb
Шаурма
std::function<void(int)> fn; fn = [&fn](int v) { qDebug() << v; if (v > 1) fn(v - 1); }; fn(3);
Sergey
да, заработало. понял.
Sergey
в 17-й все то же самое кстати
Sergey
типа, вот так вот
Sergey
auto del_rec2 = [&del_rec2]( NodePtr &node ) -> void { for ( int i = node->getNumChildren()-1; i >= 0; —i ) { del_rec2( node->getChild(i)); } node->grab(); };
Sergey
писать нельзя
Sergey
'del_rec2': cannot be used before it is initialized
Vladislav
С auto не получится, нужно в std::function завернуть
Berkus
Berkus
мы же лямбду сначала инициализируем в потом вызываем)
Vladislav
да, при этом оно гонит
не, у тебя тип лямбды, получается, зависит от самого себя
Berkus
а, ну да - это auto
Vladislav
http://icpclive.org/ тут стримчик если что на русском
Vladislav
Я по старинке, на http://zibada.ru/finals/ смотрю
Vladislav
Го болеть