c++ - 使用可变参数模板传递指向成员的指针
问题描述
考虑下面的代码:
struct A {int x; bool y; double z;};
template <class T>
void func(T A::*fieldPtr) {}
int main() { func(&A::x); }
是否可以接受指向具有可变参数模板func
的成员的多个指针?A
所以可以按如下方式使用:
func(&A::x, &A::y);
func(&A::x, &A::y, &A::z);
...
我的第一个想法是这样的:
template <class... Args>
void func(Args... A::*fieldPtr);
但它不编译。
编辑1
使用 MSVC 2017 我得到:错误 C2988:无法识别的模板声明/定义
使用 Clang:查看实时示例。
解决方案
是否可以使 func 接受具有可变参数模板的 A 成员的多个指针?
我的第一个想法是这样的:
template <class... Args> void func(Args... A::*fieldPtr);
但它不编译。
尝试
template <class ... Ts>
void func(Ts A::*...fieldPtr) { /* do something with fieldPtr... */ }
// ..............^^^
推荐阅读
- delphi - 如何在 Delphi 目录设置中获取当前项目名称?
- javascript - Discord bot 为默认 unicode 表情符号返回“未知表情符号”错误
- python - 如何在烧瓶 python 中检索 img
- ios - 是否可以将 Objective-C 项目与 SwiftUI 项目合并
- python - 在 Flask HTML 中显示多维列表
- python - 使用 RSA 在 R 中加密文本并在 Python 中解密
- python - 如何在 Python 中搜索类元素?
- c - 警告:从不同大小的整数转换为指针 (char* = function())
- python - 如何准确地以编程方式复制粘贴内容?
- android - 如何从 URL 查看谷歌地图标记上的图像?