
Aidar
06.09.2018
13:49:49

Igor
06.09.2018
13:50:16

Alexander
06.09.2018
13:50:56

Stay
06.09.2018
13:51:07
Если возможность поставлять dll-ки вместе с exe-шником. В таком случае, всё будет окей?

Google

Igor
06.09.2018
13:51:19
да

Anatoly
06.09.2018
13:51:24

Alexander
06.09.2018
13:51:31

Stay
06.09.2018
13:51:33
Спасибо
Всем

Alexander
06.09.2018
13:51:44
если у тебя там не собраны DLL с -march=native ?

Stay
06.09.2018
13:52:00
Ну статически линковаться, думаю, не вариант. Зачем такой раздутый exe

Andrey
06.09.2018
13:54:59

Aidar
06.09.2018
13:55:14

Spoonson
06.09.2018
14:01:18

Alexander
06.09.2018
14:02:03

Spoonson
06.09.2018
14:02:06
точнее не так - придется открыть исходники, потому что LGPL только для динамической

Google

Egor
06.09.2018
14:05:55
смотрите какая задачка: есть пакетный менеджер; есть пакеты; много кто зависит от одного в самом низу с зависимостью вида >=1, этот пакет берёт и ставит на новую версию GPL, получается, что люди, скачавшие другие зависимые пакеты, имеют право всё дерево зависимостей использовать под GPL - их исходники

☭
06.09.2018
14:11:14

Egor
06.09.2018
14:11:42
? человек им и слинковал с гпл сурсами

☭
06.09.2018
14:12:03
пакетным менеджером?

Egor
06.09.2018
14:12:42
ну линкером через него, подразумевается
есть разница какая-то?

☭
06.09.2018
14:13:02
большая
линкует линкер. именно в этот момент надо думать о лицензиях
пакетный менеджер - это уже поздно о них думать

Alexander
06.09.2018
14:14:26
ну линкером через него, подразумевается
если ты ведёшь к тому, что пакетный менеджер виноват - то нифига. Во-первых, как отметили выше, нарушение происходит на этапе линковки. Во-вторых, это вообще не забота пакетного менеджера такое контролировать.

Egor
06.09.2018
14:14:40
какое нарушение? всё просто огплилось
(считаем, что лицензии совместимы)

Alexander
06.09.2018
14:15:24

Egor
06.09.2018
14:15:42
тогда это описано и конкретная либа не того
примерная ситуация - дерево зависимостей mit/bsd/apache2/mpl2 и добавляем гпл

A.D.
06.09.2018
14:16:33

Egor
06.09.2018
14:16:45
ой ли?

A.D.
06.09.2018
14:17:17
не знаю, что тебе на это ответить )

Egor
06.09.2018
14:17:34
ну почему тогда их не применяют широко, если опасности никакой
и мой код не огплится

Google

A.D.
06.09.2018
14:18:54
гпл3 подразумевает динамическую линковку как основной способ использования. при этом в GPL3 сказано, что GPL3 вменяется только derived продуктам, т.е. тем, которые используют исходные тексты (не заголовочные файлы) исходного продукта

☭
06.09.2018
14:19:03
и мой код не огплится
если не можешь что-то победить - возглавь это. ожпээль свой сорс - пусть у остальных болит башка!

A.D.
06.09.2018
14:20:13
Продукты, которые динамически линкуются к этой либе, ничего ей не должны, кроме сохранения GPL3 ее самой. т.е. ты обязан где-то указать, что используешь эту либу (в About..., например)

Egor
06.09.2018
14:20:46
это LGPL

A.D.
06.09.2018
14:20:51
и еще ты обязан предоставить пользователям возможность слинковаться с новой версией

Egor
06.09.2018
14:21:36
ладно, подумать есть над чем, оставляем тему на совесть читателя)

A.D.
06.09.2018
14:23:42

Antony
06.09.2018
15:25:37
Вопрос на засыпку:
У кого-нибудь есть код, позволяющий из указателя на member function получить указатель на обычную функцию (можно даже немножко с UB)?
Что-то наподобие превращения int(foo::*)(char) => int(*)(foo*, char)
P.S.: я точно знаю, что в gamedev есть умельцы которые умеют это делать

Nikita
06.09.2018
15:28:47
std::mem_fn?
Но там не то слегка

Igor
06.09.2018
15:32:33
https://wandbox.org/permlink/l1emIP1ZmrsVnkao а в чём подвох?

Дед Пегас
06.09.2018
15:33:54

Pavel
06.09.2018
15:34:29
первый главное чтобы был this

Antony
06.09.2018
15:35:43
Там запара при virtual void printx(int i)

Kitsu
06.09.2018
15:37:41

Antony
06.09.2018
15:38:02
да (
я надеялся у кого-то есть хитрая функция с кучей #ifdef

Igor
06.09.2018
15:39:00

Kitsu
06.09.2018
15:43:50

Google

Kitsu
06.09.2018
15:46:02
а еще я слабо представляю как определить то, что функция виртуальная или нет
если только какими-то эвристиками по адресам

Pavel
06.09.2018
15:46:50

Andrey
06.09.2018
15:48:49

Kitsu
06.09.2018
15:50:51

Pavel
06.09.2018
15:51:13

Andrey
06.09.2018
15:52:05

Antony
06.09.2018
15:55:40

Fox
06.09.2018
16:09:27
25 сентября стартует новый курс по С++ для продолжающих: https://otus.pw/Uolk/
Для тех, кто уже шарит в классических плюсах и хочет прокачаться в новых стандартах, лямбдах, паттернах, асинхронности и прочих продвинутых фишках. В свежем обновлении в курс включили и С++17. Ведёт Дмитрий Шебордаев — опытный преподаватель. Использует плюсы уже больше 20 лет, сейчас руководит отделом разработки технологий в Rambler&Co.
Кстати, 11 сентября в 20:00 Дмитрий Шебордаев проведет практический вебинар на тему: «Cтранно рекурсивный шаблон». Регистрируйтесь и присоединяйтесь: https://otus.pw/AKRV/
#cpp #webinar #courses

Arseny
06.09.2018
17:33:15
Никто не в курсе, нету в планах сделать такой код корректным?
for (auto &&x : f().g()) {
//...
}

Дед Пегас
06.09.2018
17:34:11
Он вроде корректный же, разве нет?

Arseny
06.09.2018
17:35:19
Если f() возвращает временный объект, а g() возвращает ссылку на него или его часть, то время жизни результата f() не продлевается.

Igor
06.09.2018
17:35:48

Antony
06.09.2018
17:36:56
это не совсем то что хотелось бы. Хочется именно изкоробочное решение, чтобы пользователю не надо было задумываться, где писать f()
но кажется, что этому пока не суждено случиться

Arseny
06.09.2018
17:37:38

Igor
06.09.2018
17:38:32

Arseny
06.09.2018
17:39:08

Igor
06.09.2018
17:39:23

Arseny
06.09.2018
17:39:59
А работает for (auto tf = f(); auto &&x : tf.g())

Google

Igor
06.09.2018
17:40:30

Stanislav
06.09.2018
17:41:34

Arseny
06.09.2018
17:41:58
Ну так себе решена. Если бы for заменялся на
[&](auto &&arr) {
for (auto &&x : arr) {
//
}
} (f().g());То все продлевалось бы.
И наверняка это что-то кому-то сломает.

Igor
06.09.2018
17:46:37
Хотя full-expression в этом случае это вызов лямбды похоже.

Arseny
06.09.2018
17:50:13

Igor
06.09.2018
17:51:22

Max
06.09.2018
18:10:08

Alexander
06.09.2018
18:10:22