Aleksei
Aleksei
Да, еще другой тип опросов. Мне надо сделать то-то, куда посмотреть?
Sergey
Ребят, как выбрать путь до конкретного с++stdlib в cmake? По умолчанию у меня cmake берет каталог со старшей версией по пути /usr/include/c++ . Может есть какая то environment переменная или cmake переменная? (сам искал, не нашёл)
Sergey
Или может опция для компилятора есть?
Igor
(некропост но тем не менее)
в VS2017, вроде бы, их анонсировали ещё в прошлом году / начале этого, а сейчас уже якобы и std на модули начинают переводить - никто не в курсе, как оно там?
MrSmith
Там вроде проблема у них с дерективами компилятора, с одной стороны стул с сломанной совместимостью и удобствами с другой стул с совместимость и кривым решением, вроде бы все идет к посадке на второй, но в текущем стандарте вроде как снова не договорилилсь
Nikolai
Не уж то всем так сложно прийти к разумному и взвешеному решению?
Nikolai
Вот понапишут, а потом думай как собирать весь этот код под разными платформами
Nikolai
Нафига так делать - не пойму
MrSmith
Мне кажется, на наш век мы так и не дождемся пакетов в стандарте
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
Surreal
Sergey
Перешёл на gcc 7.1 - теперь проект не собирается (собирался на шестерке). Называется - придумал себе работу). Причем отвалились ranges, некоторые sfinae (куча ошибок на ambigious call), ещё парочка библиотек (типа json)
Sergey
LD_LIBRARY_PATH?
опция для clang nostdinc++ вкупе с указанием своей директории через -I<path>
Grigory
В справке gcc пишут, что nostdinc используется в основном в случаях наподобие сборки ядра или ст. библиотеки. А как IDE после этих опций нашла заголовки?
Sergey
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
Крылатый
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);};
Шаурма
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
мы же лямбду сначала инициализируем в потом вызываем)
Berkus
а, ну да - это auto
Surreal
Vladislav
http://icpclive.org/ тут стримчик если что на русском
Vladislav
Я по старинке, на http://zibada.ru/finals/ смотрю
Vladislav
Го болеть