相关疑难解决方法(0)

函数签名式表达式作为C++模板参数

我正在看Don Clugston的FastDelegate迷你库,并注意到一个奇怪的语法技巧,具有以下结构:

TemplateClass< void( int, int ) > Object;
Run Code Online (Sandbox Code Playgroud)

几乎看起来好像函数签名被用作模板实例声明的参数.

这种技术(其在FastDelegate中的存在显然是由于一个Jody Hagins)被用于简化模板实例的声明,其具有半任意数量的模板参数.

也就是说,它允许这样的事情如下:

// A template with one parameter
template<typename _T1>
struct Object1
{
    _T1 m_member1;
};

// A template with two parameters
template<typename _T1, typename _T2>
struct Object2
{
    _T1 m_member1;
    _T2 m_member2;
};

// A forward declaration
template<typename _Signature>
struct Object;

// Some derived types using "function signature"-style template parameters
template<typename _Dummy, typename _T1>
struct Object<_Dummy(_T1)> : public Object1<_T1> {};

template<typename _Dummy, typename _T1, typename _T2> …
Run Code Online (Sandbox Code Playgroud)

c++ templates

53
推荐指数
2
解决办法
2万
查看次数

标签 统计

c++ ×1

templates ×1