我正在使用一个C++“事件”类,它允许调用委托中的一个或两个参数。类型定义后需要多个部分专业化和完全专业化<>
最近我已经添加了支持不需要论证的代表,但是当我specialze类使用没有我仍然需要添加<> afther类定义模板参数。
用法示例有一个/两个参数:
class Example
{
public:
event<int> SingleArgEvent;
event<int, int> DoubleArgEvent;
};
而这里没有参数例如:
class Example
{
public:
event<> NoArgTest1; // compiles just fine
event NoArgTest2; // gives me C2955: 'event' : use of class template requires template argument list
};
因为它与支架的作品,我没有看到一个原因,他们应该到那里。 这里的类专业化代码:
class null_typelist {};
/** event template **/
template <class Targ1 = null_typelist, class Targ2 = null_typelist>
class event : public event2_base<Targ1, Targ2>
{
};
template <class Targ>
class event<Targ, null_typelist> : public event1_base<Targ>
{
};
template <>
class event<null_typelist, null_typelist> : public event0_base
{
};
无论有多少模板参数,Idea的类名都是“event”。随着typedef消失。我想没有解决方法? – Stormenet 2010-09-14 09:12:28