Я пишу ядра cuda, которые могут использовать функторы, которые передаются как параметр с шаблонами. Например:Есть ли способ избежать необходимости создавать множество шаблонов во множестве файлов?
template<typename Functor> void myKernel(float arg1, float* arg2, Functor f) {
// Do stuff that will involve f
}
Эти функторов определены в заголовочном файле, который я включать в каждый файл CPP, и для каждого из них я должен создать экземпляр все ядра со всеми функторов:
template<> myKernel<Add>(float, float*, Add)
template<> myKernel<Sub>(float, float*, Sub)
Это это много дублирования кода, и мы должны помнить о добавлении новой строки для каждого нового функтора. Есть ли способ определить все это один раз?
Препроцессора макросы? – Amit
Вам известно о явной инстанцировании? https://msdn.microsoft.com/en-us/library/by56e477.aspx –
Надеюсь, что есть решение, которое не связано с marcros. – Pafnouti