Попробуйте поместить путь libcuda.so.1 в переменную окружения LD_LIBRARY_PATH.
пример:
export LD_LIBRARY_PATH=/path/of/libcuda.so.1:$LD_LIBRARY_PATH
Необходимо поместить typename
перед той строкой начиная с типа Вы делаете:: итератор на является иждивенцем на шаблонном параметре T. Как это:
template< class T >
void example() {
typename std::list< boost::function<T ()> >::iterator it;
}
Рассмотрите строку
std::list< boost::function<T ()> >::iterator * it;
который мог означать умножение или указатель. Вот почему Вам нужно typename
ясно дать понять Ваше намерение. Без него компилятор принимает не тип, и таким образом это требует оператора там или точки с запятой синтаксически.
Также консультируйтесь с новым C++ запись FAQ, Куда поместить шаблон и имя типа на зависимых именах.