Как создать нулевой Functor в C ++ (используя библиотеку loki) - PullRequest
3 голосов
/ 02 ноября 2008

Написание чего-то подобного с использованием библиотеки 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: ошибка: оператор возврата со значением в функции, возвращающей 'void'

Кто-нибудь, знакомый с этой библиотекой, знает, как заставить работать первую строку?

Ответы [ 2 ]

3 голосов
/ 02 ноября 2008

Глядя на исходный код, определение шаблона 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.

0 голосов
/ 03 ноября 2008

То, что я изначально написал, сработало ... было поздно, и я забыл о ...

using namespace Loki; 

... очень жаль

...