Хочется написать кроссплатформенную обертку над LoadLibrary/GetProcAddress ( кстати странно, что например в boost'е её нет ) примерно со следующим интерфейсом:
auto lib = LoadLib( "cool.dll" );
auto func = lib.GetFunc<int(int, int)>( "cool_func" );
int res = func( 1, 42 );
Хочется чтобы func был функциональным объектом, т.е. реализовывал operator() с аргументами указанными в GetFunc. Почему не просто указателем? Хочется внутри еще подсчет ссылок для проверки отсутствия живых функций на момент выгрузки библиотеки, но это к вопросу не относится
Подумалось, что func реализовать можно как-то так. Но вот как бы сгенерировать parameter pack? Да и возможно ли это сделать? И если нет, то есть ли другие пути решение этой проблемы?
Здравствуйте, Voivoid, Вы писали:
V>Доброго времени суток!
V>Хочется написать кроссплатформенную обертку над LoadLibrary/GetProcAddress ( кстати странно, что например в boost'е её нет ) примерно со следующим интерфейсом:
Здравствуйте, Voivoid, Вы писали:
V>Подумалось, что func реализовать можно как-то так. Но вот как бы сгенерировать parameter pack? Да и возможно ли это сделать? И если нет, то есть ли другие пути решение этой проблемы?
тычок в небо : http://www.boost.org/doc/libs/1_41_0/libs/function_types/example/interpreter.hpp
вдруг, чего полезное там найдете
Re: Помогите наметапрограммировать или генерация parameter pack
Здравствуйте, Voivoid, Вы писали:
V>Доброго времени суток!
V>Хочется написать кроссплатформенную обертку над LoadLibrary/GetProcAddress ( кстати странно, что например в boost'е её нет ) примерно со следующим интерфейсом:
V>auto lib = LoadLib( "cool.dll" ); V>auto func = lib.GetFunc<int(int, int)>( "cool_func" );
V>int res = func( 1, 42 );
V>Хочется чтобы func был функциональным объектом, т.е. реализовывал operator() с аргументами указанными в GetFunc. Почему не просто указателем? Хочется внутри еще подсчет ссылок для проверки отсутствия живых функций на момент выгрузки библиотеки, но это к вопросу не относится
V>Подумалось, что func реализовать можно как-то так. Но вот как бы сгенерировать parameter pack? Да и возможно ли это сделать? И если нет, то есть ли другие пути решение этой проблемы?
V>
Как часто и бывает, стоит только облечь проблему в письменную форму, как решение сразу же приходит в голову. Я в предыдущем посте на пустом месте все усложнил, а сделать-то можно все гораздо проще:
Здравствуйте, Voivoid, Вы писали:
V>Как часто и бывает, стоит только облечь проблему в письменную форму, как решение сразу же приходит в голову. Я в предыдущем посте на пустом месте все усложнил, а сделать-то можно все гораздо проще: