@ProCxx

Страница 2268 из 2477
Крис
07.08.2018
22:23:03
вот так вот и продал себя. ясно-понятно
Да пока вот из вариантов либо ковырять винапи либо стажировка полугодичная. Не торт

но це оффтоп, ладно
Да, прекращаем

Alex Фэils?︙
07.08.2018
22:26:29
Constantine
07.08.2018
22:27:13
а что не так-то с ATL
оно же ужасно чуть менее, чем совсем

Google
Alex Фэils?︙
07.08.2018
22:29:09
обычные шаблоны *shrug*

Constantine
07.08.2018
22:29:31
когда я вижу template <typename Derived> во мне что-то рыдает

Alex Фэils?︙
07.08.2018
22:29:40
CRTP же обычный

Constantine
07.08.2018
22:29:59
костыль

Alex Фэils?︙
07.08.2018
22:30:22
почему костыль? древняя идиома языка

Constantine
07.08.2018
22:30:34
древний костыль, да

Alex Фэils?︙
07.08.2018
22:30:50
а почему костыль

Constantine
07.08.2018
22:32:56
потому что выражает непонятно что?

вы хотите непоследовательно описывать сущности?

Alex Фэils?︙
07.08.2018
22:33:47
ну, следуя этой логике, можно много чего из с++ назвать костылями

Constantine
07.08.2018
22:33:58
так в С++ безумно много костылей)

Stanislav
07.08.2018
22:40:17
так в С++ безумно много костылей)
из за обратной совместимости

как и в х86

Google
Alex Фэils?︙
07.08.2018
22:41:06
ну, все-таки у понятия "костыль" другое значение

Constantine
07.08.2018
22:41:10
из за обратной совместимости
поэтому одна моя мечта - чтобы в С++ уже ввели прямую инструкцию, выбрасывающую все вопросы обратной совместимости

Alex Фэils?︙
07.08.2018
22:41:34
я бы под "выражает непонятно что" использовал термин "хуита какая-то"

Constantine
07.08.2018
22:42:04
и после этого чертов оператор "&operator==" таки выполнял unqualified name lookup

Alex Фэils?︙
07.08.2018
22:42:10
я бы под "выражает непонятно что" использовал термин "хуита какая-то"
а костыль - это "временное решение для исправление проблемы, которое впоследствие может становиться постоянным"

Constantine
07.08.2018
22:42:51
а костыль - это "временное решение для исправление проблемы, которое впоследствие может становиться постоянным"
использую в смысле "создано для решения проблемы, которая существует из-за хуиты какой-то, либо является некоторым хитрым решением, проистекающим из непонимания логики происходящего"

Constantine
07.08.2018
22:44:33
Stanislav
07.08.2018
22:44:33
но так чтобы это компилилось хотябы с сями

я только за, делайте
дак начинай писать

Constantine
07.08.2018
22:45:20
чсх CRTP выглядит как вторая часть, просто логическая ошибка

Alex Фэils?︙
07.08.2018
22:46:50
а вторая часть называется "оверинжиниринг" или "переусложнение"

но так-то да, я уважаю твою категорию

Constantine
07.08.2018
22:47:24
правильная логика может приводить к более сложному году, т.е. речь именно о том, что логика не угадана

Stanislav
07.08.2018
22:48:44
правильная логика может приводить к более сложному году, т.е. речь именно о том, что логика не угадана
предлагаю сначала угадать логику, но один хрен, во многих ситауциях без С++ никуда

Constantine
07.08.2018
22:48:46
учитывая то, что написано на википедии про CRPT в ATL мне кажется, что их заломало делать декомпозицию сущностей для окна

Alex Фэils?︙
07.08.2018
22:49:10
а, вот чем тебе не нравится ATL; а я думал, ты про CRTP в целом

ну, возможно, да, ты прав

Google
Constantine
07.08.2018
22:49:33
я не знаю примеров, в которых использование CRTP само по себе выглядит правильным

скажем так, у меня не было желания так написать никогда

Alex Фэils?︙
07.08.2018
22:50:54
дык это подвид статического полиморфизма, тащемта во многих случаях можно юзнуть его вместо вирт. функций, но я слишком грубо говорю, детали всегда в дьяволе

Constantine
07.08.2018
22:51:29
но модель статического полиморфизма без CRPT просто сильнее модели динамического

в том смысле, что она напрямую имеет аналог тех же интерфейсов как концептов, да еще и с невыражаемыми в случае виртуальных функций примочками

таких, как tag dispatching

Alex Фэils?︙
07.08.2018
22:53:03
ну, да, есть средства выразительнее так-то

Constantine
07.08.2018
22:54:03
я понимаю, что EventHandler до безумия связан с InnerState настолько, что эти структуры параллельно наследуются, но не уверен, что их нужно пихать в один объект

предлагаю сначала угадать логику, но один хрен, во многих ситауциях без С++ никуда
не могу сказать, что я в неё до конца умею, могу лишь сказать, что описание единым классом окна вместе с обработчиками - совершенно точно ошибочно

Alex Фэils?︙
07.08.2018
23:02:25
а, это же древняя попоболь, когда обработчики рядом валяются, да

и в мфц были карты, и в голом винапи тащемта вндпроц была крупным свичом обычно

Constantine
07.08.2018
23:08:52
там что-то вроде того, что итоговое окно это комбинация InnerState, EventDispatcher (преобразование из общих сигналов в сигналы InnerState) и Renderer (чистая функция над InnerState), причем из InnerState еще что-то торчит в сторону владельца

Alex Фэils?︙
07.08.2018
23:09:54
Специфический mvc получается, и весь на статическом полиморфизме...??

Constantine
07.08.2018
23:11:16
Здесь InnerState это, видимо, вся связка M+C

Причем в динамическом полиморфизме здесь очень серьезные неприятности из-за того, что InnerState вообще говоря для выбора font-face и font-size просто разный

Andrey
08.08.2018
02:53:53
Andrey есть ли примеры с корутинами у вас? мне для поиграться
Могу скромно предложить посмотреть видео (полистать презентации) моих выступлений на эту тему: https://www.youtube.com/watch?v=2tWNm_fDxX0 https://www.youtube.com/watch?v=Je21p0gUiPA и/или почитать документацию здесь https://github.com/lewissbaker/cppcoro Примеров использования Coroutine TS в реальном серьезном opensource коде я не знаю, самому было бы интересно.

Dmitry
08.08.2018
06:25:20
таких, как tag dispatching
Я может не понял, но с crtp вроде тоже можно tag dispatching.

И какова вообще альтернатива в плане статического полиморфизма для конструкции типа ConcreteAlgoritm : GenericAlgorithm<ConcreteAlgoritm>?

olologin
08.08.2018
07:00:17
Господа, а есть ли какой-то профит в поиске функции через GetProcAddress, заместо обычной динамической линковке при запуске?

Я просто хочу достать указатель на функцию в системной библиотеке, не знаю какой способ выбрать

Google
yuri
08.08.2018
07:07:21
Господа, а есть ли какой-то профит в поиске функции через GetProcAddress, заместо обычной динамической линковке при запуске?
Система может быть старой, и не содержать нужной функции. Например, SHGetKnownFolderPath() в виндовз.

Andrey
08.08.2018
07:08:24
Господа, а есть ли какой-то профит в поиске функции через GetProcAddress, заместо обычной динамической линковке при запуске?
С GPA 1. Ты сам решашаешь, когда подгрузить, когда отгрузить 2. У тебя есть шанс обработать ситуацию, что функции в библиотеке нет

olologin
08.08.2018
07:08:54
Хмм, а версионинг на это всё никак не влияет?

Т.е если я прилинкуюсь динамически к какому-то символу из системной либы во время линковки

И если я буду запрашивать этот символ через GPA

разницы нет никакой?

Т.е может ли быть такое что я на десятой винде соберу свой экзешник который будет прилинкован к слишком новому символу

Andrey
08.08.2018
07:10:51
Хмм, а версионинг на это всё никак не влияет?
1. Механизм поиска библиотеки не зависит, динамическая линковка или ручная загрузка. 2. Если ты указываешь полный путь, то никакой версионности.

olologin
08.08.2018
07:10:54
и на какой-нибудь семёрке длл-ка будет с таким именем, но более старой версии, и всё упадёт

Понял, спасибо

Andrey
08.08.2018
07:11:35
А если руками, то как я уже сказал - у тебя есть шанс

olologin
08.08.2018
07:11:52
ну да, упадёт в смысле что не запустится

Andrey
08.08.2018
07:12:28
ну да, упадёт в смысле что не запустится
Я понял, что "упадет" в смысле "не взлетит" )

Aidar
08.08.2018
07:17:04
Ктото курил executors? Там есть стандартные штуки чтоб допустим скомпилить нужные части в spirv? Я не представляю как оно может выглядеть

Сейчас есть computecpp который шланг в двух режимах, нормальном и генерирующем spirv

Matwey
08.08.2018
07:20:55
Aidar
08.08.2018
07:21:24
А чо потом делать с этими нужными часями? В GPU тоже компилятор их загружать будет?
Слинковать в ресурсы и загружать экзекьютором очевидно

Этож под капотом

Сейчас computecpp так и делает

Google
Matwey
08.08.2018
07:22:32
Этож под капотом
Под каким капотом? Если все-равно руками делать, то почему бы не использовать два компилятора?

Andrey
08.08.2018
07:39:12
Ктото курил executors? Там есть стандартные штуки чтоб допустим скомпилить нужные части в spirv? Я не представляю как оно может выглядеть
Предполагается, что вендоры смогут сделать GPUExecutor, удовлетворяющий концепту 'Executor', вообще этот proposal про интерфейсы а не про реализации.

Andrey
08.08.2018
08:20:47
угу, как и gc когдато
С одной стороны я полностью разделяю Ваш скепсис по отношению к черезчур амбициозным долгостроям, которые в итоге ложатся непомерным грузом на вендоров, никогда не реализуются и полностью бесполезны для пользователей языка. С другой стороны мне представляется, что задача выделения общего интерфейса между обычным thread pool'ом, net::io_context-ом, gui events loop-ом , fibers scheduler'ом и очередью gpu-задач в смысле OpenCL как минимум очень важна и полезна, а как максимум необходима для дальнейшего консистентного развития stdlib.

Ожидать при этом, что Executors дадут какой-то новый удобный способ работать c gpu-computing в С++, по-моему, практически бесполезно.

Ilia
08.08.2018
08:25:53
Я просто хочу достать указатель на функцию в системной библиотеке, не знаю какой способ выбрать
Ты должен использовать библиотеку импорта (*.lib) из состава WinSDK. Все другие способы невалидны, хотя и могут иногда работать.

olologin
08.08.2018
08:27:32
А если я юзну либ файл для импорта на более новом СДК

olologin
08.08.2018
08:27:46
Запустится ли такая программа на старой винде?

Ilia
08.08.2018
08:28:11
Запустится ли такая программа на старой винде?
С отложенной загрузкой запустится

olologin
08.08.2018
08:28:38
А с обычной динамической линковкой?

Ilia
08.08.2018
08:29:52
Хмм, а версионинг на это всё никак не влияет?
Ещё раз, загрузка функций по имени или номеру из системной .DLL -- это невалидный код. Ты запросто можешь попасть в следующей версии на дырку в таблице экспорта этой .dll

А с обычной динамической линковкой?
Что значит обычная динамическая линковка? Есть три, связывание через библиотеку импорта, связывание через .def файл и динамическая загрузка библиотеки и GetProcAddress.

Страница 2268 из 2477