как сделать инстансирование функции
От: sergey2b ЮАР  
Дата: 29.04.20 23:46
Оценка:
есть фнкция имеющая примерно такой прототип

template <int num, class type>
int overlay(TBI<num, type> *out, const TBI<num, type> *in, const scale *mask, int x, int y)

описанная и реализованная в библиотеки
и есть программа использующая эту библиотеку

в VS через #define я сделал instance этой функции с нужными мне параметрами, но этот трюк не сработал с gcc
подскажите пожалуйста как можно сделать инстанс этой функции что бы она была в библиотеке после компиляции
Отредактировано 29.04.2020 23:47 sergey2b . Предыдущая версия .
Re: как сделать инстансирование функции
От: Vamp Россия  
Дата: 30.04.20 00:29
Оценка: +1
Здравствуйте, sergey2b, Вы писали:

S>подскажите пожалуйста как можно сделать инстанс этой функции что бы она была в библиотеке после компиляции


Звучит так, словно тебе нужен explicit template instantiation.
Да здравствует мыло душистое и веревка пушистая.
Re[2]: как сделать инстансирование функции
От: sergey2b ЮАР  
Дата: 30.04.20 00:43
Оценка:
Здравствуйте, Vamp, Вы писали:

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


S>>подскажите пожалуйста как можно сделать инстанс этой функции что бы она была в библиотеке после компиляции


V>Звучит так, словно тебе нужен explicit template instantiation.



оно вроде бы только для класса
Re[3]: как сделать инстансирование функции
От: Vamp Россия  
Дата: 30.04.20 01:15
Оценка: 4 (1) +1
Здравствуйте, sergey2b, Вы писали:


V>>Звучит так, словно тебе нужен explicit template instantiation.



S>оно вроде бы только для класса


Отчего же. Для функций тоже отлично работает.
Да здравствует мыло душистое и веревка пушистая.
Re[3]: как сделать инстансирование функции
От: rg45 СССР  
Дата: 30.04.20 05:59
Оценка: 4 (1) +2
Здравствуйте, sergey2b, Вы писали:

V>>Звучит так, словно тебе нужен explicit template instantiation.


S>оно вроде бы только для класса


Вот здесь толково все изложено: https://en.cppreference.com/w/cpp/language/function_template. Найди здесь раздел "Function template instantiation". Для твоего случая запрос на явное инстанцирование будет выглядеть совсем просто:

using MyTBI = TBI<myNum, myType>;

template int overlay(MyTBI*, const MyTBI*, const scale*, int, int);
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[4]: как сделать инстансирование функции
От: sergey2b ЮАР  
Дата: 30.04.20 16:19
Оценка:
Здравствуйте, rg45, Вы писали:

я вам написал, хотелось бы пообшаться в лички
не получаеться у меня инстансировать мою функцию на gcc хотя на VS2015 работает
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.