Шаблон класса - это просто шаблон для класса, это еще не настоящий класс. Вам нужно указать параметры шаблона, чтобы получить из него класс, например IEvent<int>
. Поэтому вам нужно решить, для каких событий вы хотите использовать этот typedef, например, для int:
typedef boost::function<void (IEventable&, IEvent<int>&)> behaviorRef;
В противном случае, если вам нужен typedef для всех возможных реализаций шаблона, вам нужно поместить сам typedef в другой шаблонный класс. Посмотрите ответ sbi для примера этого.