在浏览gcc当前新C++ 11标头的实现时,我偶然发现了"......"令牌.您可以检查,以下代码编译正常 [通过ideone.com].
template <typename T>
struct X
{ /* ... */ };
template <typename T, typename ... U>
struct X<T(U......)> // this line is the important one
{ /* ... */ };
Run Code Online (Sandbox Code Playgroud)
那么,这个令牌的含义是什么?
编辑:看起来如此修剪"......"的问题标题为"......",我的意思是"......".:)
我正在编写一个模板类,它包含成员函数以减少一些调用 - 如果某些条件为真,则不需要调用成员函数.签名看起来像这样
template <typename MemFuncType, MemFuncType> class MemberWrapper;
Run Code Online (Sandbox Code Playgroud)
我可以专门研究它:
template <typename R, typename T, R T::* MemFunc> class MemberWrapper<R T::*, MemFunc>{};
Run Code Online (Sandbox Code Playgroud)
我还想限制参数的数量R T::*.我该怎么做呢?
我能想到的唯一解决方案是通过提供基于返回类型,函数类型,参数列表和cv限定符的部分特化来实现成员函数特征类.这将导致像当前std::mem_fn 重载一样繁琐的实现.有没有办法做得更好?
编辑:更改Ret到R.正如评论中指出的那样,它并不是真正的返回类型,并且专业化无效.