Max
а подскажите еще, как впихнуть std::result_of в мой пример?
Max
что ему положить в темлейт?
Igor
м.б. я не совсем понял задачу, но почему не сделать так? https://godbolt.org/g/T66By6
Danil
что ему положить в темлейт?
using Ret = std::result_of_t<Getter(T*)>;
Danil
что ему положить в темлейт?
https://ideone.com/lIb6ST полный пример
Max
using Ret = std::result_of_t<Getter(T*)>;
Блин... T* это явно переданный this?
Max
А нельзя связать Getter get с T* t, там через std::bind или как-то еще, чтоб можно было обращаться к Getter get к самостоятельной функции?
Danil
Блин... T* это явно переданный this?
ну сигнатура у функции int (Item::*)() она первым аргументом принимает поинтер на экземпляр класса Item
Danil
ну так сделай bind, чтобы это был просто функтор
Danil
bind тебе выдаст объект типа std::function<int()>
Max
я понял, спасибо
Berkus
вообще bind нинужен
Berkus
т.к. в твоем случае вообще надо биндить shared_from_this() иначе ты рискуешь вызывать свой гет на уже убитом объекте
Berkus
лямбды нагляднее
Daria
Всем доброго вечера. Есть проблема исключительно чайниковского характера. Среда - Codebloks. Есть многофайловый проект, который мы пытаемся собрать. При попытке это сделать среда грустно пишет, что не нашла объектный файл там, где он с точки зрения среды( и моей) должен быть. Смотрим в папочку - действительно. Нет файла. Берем команду, которой среда клепает объектный файл, скармливаем командной строке и воуля. Файл на месте. Путь указан в настройках вроде как верный. В чем может быть проблема?
Berkus
проект code::blocks как сгенерирован, чем?
Daria
проект code::blocks как сгенерирован, чем?
сделан из шаблона, добавлены файлы.
Daria
странно что команды, скопированные из билдлога в консоли отлично отрабатывают. И кстати потом C::B их отлично видит. до очистки каталога .obj/
Daria
всё отлично, только ничего не работает :)
Berkus
ну я конечно biased но для начала я бы сгенерировал этот проект из cmake
Daria
ну я конечно biased но для начала я бы сгенерировал этот проект из cmake
make файлов нет, cmake на этот проект не планирую. Его изучать буду чуть позже, не доросла еще до таких продвинутых технологий:D Интересует почему одни и те же команды работают в консоли и не работают в C::B. Явно же косяк в среде.
Berkus
make файлов нет, cmake на этот проект не планирую. Его изучать буду чуть позже, не доросла еще до таких продвинутых технологий:D Интересует почему одни и те же команды работают в консоли и не работают в C::B. Явно же косяк в среде.
вот я и говорю - зачем писать проект в косячной среде если можно сделать простой cmake и генерировать из него потом code::blocks проект, который ХОТЯ БЫ будет работать, непонятно
Berkus
make нинужен
Vsevolod
базовые вещи в cmake делаются элементарно
Daria
базовые вещи в cmake делаются элементарно
А я хочу нажать кнопочку Build и то бы оно отработало. Как на соседнем компьютере:D
Berkus
если одна среда не может reproducibly сделать одно и то же на двух разных машинах - такая среда не нужна
Berkus
А я хочу нажать кнопочку Build и то бы оно отработало. Как на соседнем компьютере:D
ты так и будешь сделать когда сгенеришь цмаком code::blocks project
Berkus
C другой стороны, если ты фанат мазохизма - не буду мешать.
Daria
Проблема решена, землекопа полтора - проблема в версии. cmake - это круто, но пока его освоение откладывается до следующего проекта)
Berkus
Berkus
я это сразу и предложил
Anatoly
@antoshkka ребят, а в std::optional решили не поддерживать reference type по причине того, что в этом случае можно обойтись указателем? скажем, была у меня функция, которая возвращала boost::optional с ссылочным типом, чтобы не копировать value из поискового метода: boost::optional<foo const&> find_foo_or_none(...); ... auto f = find_foo_or_none(); if( f ) { auto&& v = *f; } группа по стандартизации считает, что это не кейс для std::optional и можно обойтись: foo const* find_foo_or_none(...); ... auto f = find_foo_or_none(...); if( f ) { auto&& v = *f; } ?
Anatoly
Igor @antoshkka спасибо за разъяснение!
Anonymous
А тут по инф. без. люди есть?
Anatoly
почему? есть значение, беру по ссылке, не копируя, нет ссылки, ну на нет и суда нет: template<typename T> class reference_optional { T* ref_; public: reference_optional() : ref_(nullptr) {} explicit reference_optional(T &r) : ref_(&r) {} bool has_value() const {return ref_ != nullptr;} T const& value() const {return *ref_;} }; `
Anatoly
то есть для моего кейса был бы нужен readonly_optional, если бы он был, который бы работал как std::reference_wrapper с возможностями std::optional, как и написал Антон.
kitsu
А тут по инф. без. люди есть?
Лучше сразу вопрос
Anonymous
Я прост на буд спросил.)
Arseny
На оборот же. optional часто как раз хочется для объектов у которых не бывает пустых значений.
Anatoly
между тем этот use case поддерживает boost::optional для замены указателя, ну а так-то да, я об этом в исходном вопросе написал.
babysitter
может кто знает, можно ли в Poco::Util::Option сделать _группу_ опций required?
babysitter
не обязательно конфиги, можно и простой cli так парсить. ну короче логика там на самом деле простая, одна проверка и исключение кинуть. просто обидно, что хелп кривовато выглядит из-за того, что руками
Berkus
docopt используй да и всё
Alexander "SonnySlave"
хм, какую-то ещё штуку только что нашёл бесплатную для анализ опенсорс проектов. Пробовал кто-нибудь? https://about.sonarcloud.io/
Danil
Там править можно
можно просто не читать)
Aidar
можно просто не читать)
Лучше прочитать и исправить
Vsevolod
@zamazan4ik сейчас попробую :)
Alexander "SonnySlave"
@zamazan4ik сейчас попробую :)
мне было бы интересно также погонять по сравнению с cppcheck и пивас студией
Alexander "SonnySlave"
мб тут есть из пивас кто-нибудь?
Vsevolod
у меня есть уже coverity
Vsevolod
пивас как-то не особо адекватно относились к опенсорсу
Vsevolod
ERROR: ld.so: object '/home/cebka/build-wrapper-linux-x86/libinterceptor-${PLATFORM}.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
Vsevolod
пока вот так
Berkus
пивас как-то не особо адекватно относились к опенсорсу
пивас для опенсурса вроде бесплатно доступен, не?
Vsevolod
раньше не был
Alexander "SonnySlave"
пивас для опенсурса вроде бесплатно доступен, не?
ну с условием добавления комментария к .cpp - да, бесплатно
Alexander "SonnySlave"
для хедеров ничего добавлять не надо - бесплатно проверяет
Vsevolod
"у" - удобство по-русски
Berkus
ну с условием добавления комментария к .cpp - да, бесплатно
ну для опенсурса это не настолько плохо, учитывая что продукт коммерческий вообще
Vsevolod
я бы это назвал другим словом на букву "у"
Alexander "SonnySlave"
"у" - удобство по-русски
ну либо чуваки просто комменты добавляют. Либо просто скрипты на вставку, проверку, удаление комментов
Vsevolod
на опеннете бойцы сразу же этот пивас поломали
Vsevolod
поэтому я просканил ломанным
Vsevolod
не впечатлился совершенно
Alexander "SonnySlave"
ну для опенсурса это не настолько плохо, учитывая что продукт коммерческий вообще
да, согласен. Намного лучше, чем ничего. Но хуже, чем без этого уебанского коммента
Berkus
на опеннете бойцы сразу же этот пивас поломали
достаточно найти в бинарнике поиск заданной строчки, чего уж проще
Vsevolod
да
Vsevolod
но зачем мне ломанный пивас, который не находит ничего полезного?
Alexander "SonnySlave"
не знаю. А мне понравился, так как находил баги
Berkus
пивас много чего полезного находит
Vsevolod
а у меня ничего