Информация об изменениях

Сообщение Re[3]: move-"cериализация" шаблонных параметров от 12.03.2023 15:16

Изменено 12.03.2023 15:18 vopl

Re[3]: move-"cериализация" шаблонных параметров
Здравствуйте, tapatoon, Вы писали:

T>Здравствуйте, vopl, Вы писали:


V>>struct AbstractHandler

V>>{
V>> virtual ~AbstractHandler() {}
V>> virtual void func( int&& p1, std::string&& p2 ) = 0;
V>>};
T>Не, это базовый интерфейс для всех клиентов, тут любые параметры должны уметь принимать

что то теперь не вполне понятно, что именно тебе надо .. Как то раз делал штуку, которая проводит вызов по аналогии boost::signals, но в рантайме обеспечивает нечто типа perfect forwarding. Получается, что если ее активировать с правой ссылкой и пользовательский калбек способен принять правую ссылку — будет перемещение параметра, иначе — копирование. Внутре у ней неонка стирание типа пользовательского калбека, поэтому прекрасно работает и сквозь границу единицы трансляции, и сквозь границу dll/so. Тут рафинированный пример использования, смотри кейс "move — move"
https://github.com/vopl/dci-core-sbs/blob/master/test/transfer.cpp#L71
Re[3]: move-"cериализация" шаблонных параметров
Здравствуйте, tapatoon, Вы писали:

T>Здравствуйте, vopl, Вы писали:


V>>struct AbstractHandler

V>>{
V>> virtual ~AbstractHandler() {}
V>> virtual void func( int&& p1, std::string&& p2 ) = 0;
V>>};
T>Не, это базовый интерфейс для всех клиентов, тут любые параметры должны уметь принимать

что то теперь не вполне понятно, что именно тебе надо .. Как то раз делал штуку, которая проводит вызов по аналогии boost::signals, но в рантайме обеспечивает нечто типа perfect forwarding. Получается, что если ее активировать с правой ссылкой и пользовательский калбек способен принять правую ссылку — будет перемещение параметра, иначе — копирование. Внутре у ней неонка стирание типа пользовательского калбека, поэтому прекрасно работает и сквозь границу единицы трансляции, и сквозь границу dll/so. Тут рафинированный пример использования, смотри кейс "move — move"
https://github.com/vopl/dci-core-sbs/blob/master/test/transfer.cpp#L71

Если такое тебе надо — могу порасказывать, как оно устроено и как повторить малыми силами и без лишнего