Как создать нулевой Functor в C++ (используя библиотеку loki)
Писать что-то вроде этого, используя библиотеку loki,
typedef Functor<void> BitButtonPushHandler;
выдает ошибку компилятора, но это работает
typedef Functor<void,TYPELIST_1(Matrix3D*)> Perspective;
Functor.h:530: ошибка: '((Loki::FunctorHandler, int>*)this)->Loki::FunctorHandler, int>::f_' нельзя использовать в качестве функции Functor.h:530: error: return-значение со значением, в функции, возвращающей 'void'
Кто-нибудь, знакомый с этой библиотекой, знает, как заставить работать первую строку?
2 ответа
Глядя на исходный код, определение шаблона Functor выглядит следующим образом:
template <typename R = void, class TList = NullType,
template<class, class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL>
class Functor{...};
Как указано ниже, недопустимы определения типов шаблонов, поэтому необходимо указывать все типы (или принимать все значения по умолчанию).
Вы можете просто определить следующее и позволить настройкам по умолчанию сделать работу:
typedef Functor<> BitButtonPushHandler;
Это скомпилировано для меня с небольшим тестовым классом Functor (а не с классом Loki), и я могу успешно использовать typedef.
То, что я изначально написал, сработало... было уже поздно, и я забыл о...
using namespace Loki;
...так жаль