Size: a a a

2020 July 25

IZ

Ilia Zviagin in pro.cxx
Vyacheslav Olkhovchenkov
struct magic_abs{} \u200d;
вот так это выглядит в vi
я раньше догадался , не смотря на всю мою тупизну...
источник

IZ

Ilia Zviagin in pro.cxx
Vyacheslav Olkhovchenkov
struct magic_abs{} \u200d;
вот так это выглядит в vi
Да напалмом надо таких сжигать....
источник

IZ

Ilia Zviagin in pro.cxx
что так пишут...
источник

CD

Constantine Drozdov in pro.cxx
Vyacheslav Olkhovchenkov
U+200D    ‍    e2 80 8d    ZERO WIDTH JOINER
жестко
источник

АК

Александр Караев... in pro.cxx
сломается сразу же, как кто-то дважды вызовет platformDependentInit
источник

v

vehlwn in pro.cxx
Александр Караев
сломается сразу же, как кто-то дважды вызовет platformDependentInit
Там нужен компайл тайм счетчик.
источник

АК

Александр Караев... in pro.cxx
vehlwn
Там нужен компайл тайм счетчик.
Для этого функция platformDependentInit должна быть шаблонной по значению счетчика
источник

АК

Александр Караев... in pro.cxx
Точнее, контекст, из которого вызывается obtain_connector, должен быть шаблонным (уникальным)
источник

v

vehlwn in pro.cxx
Передавай в лямблию void* data, как все нормальные сишные калбаки, а не захватывай висячие указатели.
источник

VK

Valentin Kornienko in pro.cxx
Александр Караев
сломается сразу же, как кто-то дважды вызовет platformDependentInit
Его дважды никто не вызовет.
источник

VK

Valentin Kornienko in pro.cxx
Александр Караев
сломается сразу же, как кто-то дважды вызовет platformDependentInit
Какая причина?
источник

v

vehlwn in pro.cxx
Valentin Kornienko
Какая причина?
#include "../CallbackConnector/CallbackConnector.h"
#include <iostream>
struct A {
   using cb_t = void (*)();
   cb_t func;
   A() {
       func = cbc::obtain_connector(
           [this]() { std::cout << "this = " << (void*)this << "\n"; });
   }
};
int main() {
   A a, b;
   a.func();
   b.func();
}
this = 000000000023F6E8
this = 000000000023F6E8
источник

АК

Александр Караев... in pro.cxx
Valentin Kornienko
Его дважды никто не вызовет.
даже на двух разных объектах? то есть объект всегда один? то this всегда одинаков (т.е. может быть глобальным?) =)
источник

VK

Valentin Kornienko in pro.cxx
vehlwn
#include "../CallbackConnector/CallbackConnector.h"
#include <iostream>
struct A {
   using cb_t = void (*)();
   cb_t func;
   A() {
       func = cbc::obtain_connector(
           [this]() { std::cout << "this = " << (void*)this << "\n"; });
   }
};
int main() {
   A a, b;
   a.func();
   b.func();
}
this = 000000000023F6E8
this = 000000000023F6E8
Для этого в ObtainConnector предусмотрена возможность. Посмотрите ридми.
источник

VK

Valentin Kornienko in pro.cxx
Переслано от Valentin Kornienko
источник

VK

Valentin Kornienko in pro.cxx
Прямо в примерах.
источник

АК

Александр Караев... in pro.cxx
Valentin Kornienko
Какая причина?
причина в том, как работает библиотека. магии не существует.
библиотека фактически позволяет пользователю не писать cbc::obtain_connector<some_unique_tag_1> при вызове, а генерирует этот тег сама.
что очевидно не поможет, если вызов идёт в цикле или внутри функции, которая зовётся из разных источников
источник

VK

Valentin Kornienko in pro.cxx
Александр Караев
причина в том, как работает библиотека. магии не существует.
библиотека фактически позволяет пользователю не писать cbc::obtain_connector<some_unique_tag_1> при вызове, а генерирует этот тег сама.
что очевидно не поможет, если вызов идёт в цикле или внутри функции, которая зовётся из разных источников
Есть возможность тег руками прописать.
источник

АК

Александр Караев... in pro.cxx
Valentin Kornienko
Есть возможность тег руками прописать.
for (int i = 0; i < rand() % 5; i++) {
 cbc::obtain_connector(...);
}

удачи с прописыванием тегов
источник

VK

Valentin Kornienko in pro.cxx
Александр Караев
for (int i = 0; i < rand() % 5; i++) {
 cbc::obtain_connector(...);
}

удачи с прописыванием тегов
Окей, я рассматриваю где-то случай использования библиотеки в этом контексте?
источник