Constantine
если std::addressof(control_block) == std::addressof(storage), он лежит там
Nikita
а не лучше ли std::aligned_union?
Constantine
?
Nikita
а ну да, тогда непонятно как детектить , была ли аллокация или нет
Constantine
угу, а 1 байт или 8 не решает
Constantine
пушо все равно отравняют
Constantine
технически можно наэкономить
Constantine
и хранить в последнем бите aligned_storage
Anatoliy
ну там выше пример, комментируешь первый static_assert начинает все работать, а ошибка в третьем
не знаешь где почитать обоснования такого выбора для name lookup?
Matwey
Господа
Matwey
А как себя ведет shared_from_this при множественном наследовании?
Matwey
Его надо виртуально наследовать?
Nikita
падажжи, а как ты собираешься его использовать при множественном наследовании
Александр
А как себя ведет shared_from_this при множественном наследовании?
последний раз он мне ногу отстрелил, когда я сделал struct A : B, std::enable_shared_from_this<A> {}
Александр
пришлось лезть в B и его наследовать
Matwey
Так std::enable_shared_from_this просто дописывает же поле с weak_ptr насколько я понимаю?
Matwey
хочу class C: public A, B хранить С в shared_ptr
Matwey
и чтобы он кастился до shared_ptr на A и B
Matwey
Наверное придется сделать общую базу, да?
Nikita
тебе нужно чтобы C умел отдавать указатель на себя, только в виде shared_ptr<A> / shared_ptr<B>?
Matwey
Сейчас я точно скажу
B
господа, кто-нибудь сталкивался с таким:? /usr/bin/ld: CMakeFiles/ed25519.dir/lib/ed25519/amd64-64-24k-pic/fe25519_mul.s.o: relocation R_X86_64_PC32 against symbol `crypto_sign_ed25519_amd64_64_38' can not be used when making a shared object; recompile with -fPIC проект CMake, таргет создается через add_library(ed25519 SHARED <тут все .c и .s (asm) файлы>) -fPIC точно есть при компиляции каждого отдельного файла, установлен через set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
B
гугл советует рекомпилить всё с -fPIC, но я специально посмотрел с make VERBOSE=1, абсолютно всё компилится с -fPIC
Александр
а что здесь не так?
Я уже не помню контекста. Но что-то явно было не так
Matwey
https://wandbox.org/permlink/8vR1VIttEqtEECSZ
Matwey
Мне вот так нужно
Constantine
зачем если просто работает?
Constantine
struct A {}; struct B {};
Constantine
struct C : A, B, std::enable_shared_from_this<C> { };
Constantine
будет каститься
Matwey
но из кишков A нельзя будет shared_from_this сделать
Constantine
а, хм
Constantine
надо чтобы A умел shared на себя при том, что он не шаред?)
Constantine
или A : enable_shared_from_this<A> B: enable_shared_from_this<B>
Matwey
ась?
Anatoly
ась?
зачем тебе shared_from_this в A?
Constantine
а, вы хотите множественно отнаследовать штуки, которые shared_from_this умеют?
Matwey
Да
Constantine
с виртуальным наследованием точно есть тонкости просто
Constantine
Да
а можно ВНЕЗАПНО XY зачем?
Constantine
т.е. я просто с трудом могу представить такую ситуацию
Constantine
у меня множественное наследование-то в коде в полутора местах
Igor
А как звать этого энтузиаста?
хз, знаю что преподавателя звать Горин Сергей Викторович, кафедра ИУ7
Ostap ꑭ
New wave
FailsBot
∧_∧ ( ・ω・。)つ━☆・*。 ⊂  ノ    ・゜+. しーJ   °。+ *´¨)          .· ´¸.·*´¨) ¸.·*¨)           (¸.·´ (¸.·'* ☆
🐼 Sild
что, это тоже в 21 стандарте будет компилиться?
Olesya
https://www.youtube.com/channel/UCFPPiFWtjf-y7cnUsjSeWxw
Olesya
вот собсна канал и там даже первые лекции есть
Matwey
что, это тоже в 21 стандарте будет компилиться?
Причем это печатает само себя в 21 стандарте
Ostap ꑭ
Zen of C++
Nikita
Ребят, использую GTest, при написании ASSERT_EQ : ASSERT_EQ(stream::Stream(Gen()) | map([](auto &&v){ return v * v; }) | nth(0), 21 * 21);Вываливается ошибка компиляции, жалуется на лямбду lambda expression in an unevaluated operandА если написать ASSERT_THAT ASSERT_THAT(stream::Stream(Gen()) | map([](auto &&v){ return v * v; }) | nth(0), 21 * 21);То всё замечательно работает. Есть ли семантическая разница для простого сравнения значений между ASSERT_EQ и ASSERT_THAT? Если нет, то нафиг нужен ASSERT_EQ?
Nikita
хм, ну тест нормально выполняется и проходит, причём если 21 * 21 заменить на другое значение то тест фейлится
Nikita
(как и должно быть, разумеется)
Vladislav
загадочно
Vladislav
из документации: Asserts that value matches matcher
Vladislav
а матчеры бывают встроенные либо определяются через MATCHER(...)
Nikita
мож есть какой то дефолтный для интов
Vladislav
а stream это вот эти? http://jscheiny.github.io/Streams/
Nikita
не
Nikita
это мои
Nikita
ещё прикол в том, что если лямбду передать по lvalue ссылке, то всё работает и с ASSERT_EQ
Nikita
а ошибка про lambda expression in an unevaluated operand вываливается одна и та же что в gcc что в clang
Nikita
так что на багу компилятора непохоже
Nikita
лямбда вызовется
Nikita
сама по себе
Nikita
Хм, спасибо
Vitaliy
Начал копать в сторону имплементации pImpl и наткнулся на то, что на cpp_reference предлагают его оборачивать в propagate_const, пропосал на который есть, но последний раз рассматривался 3 года назад. В бусте такой штуковины не нашёл. Кто-нибудь в курсе вообще что там с этой штукой происходит ? )
Alexander
https://github.com/jbcoe/propagate_const репа автора если что
Alexander
в exprerimental gcc уже должен быть
Vitaliy
Но что толку от репы, если кажется, что там всё затухло)