C++ 11 可变参数宏结合可变参数模板使用!
来源:互联网 发布:sdrsharp软件使用教程 编辑:程序博客网 时间:2024/06/13 06:59
template<typename T>struct register_t{ register_t(const std::string& key) { map_.emplace(key, [] { return new T(); }); } template<typename... Args> register_t(const std::string& key, Args... args) { map_.emplace(key, new_object(args...)); } private: T* new_object() { new T(); } template<typename... Args> T* new_object(Args... args) { new T(args...); } std::map<std:string, T*> map_;};#define REGISTER_MESSAGE_VNAME(T) reg_msg_##T##_#define REGISTER_MESSAGE(T, key, ...) static factory::register_t<T> REGISTER_MESSAGE_VNAME(T)(key, ##__VA_ARGS__);注意: __VA_ARGS__ 扩展宏在有逗号的情况必须加上前缀##来匹配空的变长宏参数,否则宏展开后将因为存在多余的逗号而导致编译报错。
0 0
- C++ 11 可变参数宏结合可变参数模板使用!
- C 参数可变宏使用
- C 可变长参数 VS C++11 可变长模板
- C 可变长参数 VS C++11 可变长模板
- C 可变长参数 VS C++11 可变长模板
- c++-可变参数模板函数
- C可变参数宏
- C宏 可变参数
- 可变参数宏.c
- C 可变参数宏
- C++11 可变参数模板
- C++11 可变模板参数
- C++11可变模板参数
- C 可变参数的使用
- C可变参数的使用
- C++可变参数模板
- 可变参数模板用法
- 可变参数模板
- CF Good Bye 2015 E. New Year and Three Musketeers(贪心+枚举)
- ImportError: No module named cv2
- Java-Blob-取出来插入另一个数据库[导库程序]
- Socket编程实践(8) --Select-I/O复用
- Oracle的绿色客户端工具,支持ODBC和PL_SQL
- C++ 11 可变参数宏结合可变参数模板使用!
- HTML5 标准格式
- Socket编程实践(9) --套接字IO超时设置方法
- VS2012鼠标输入光标变成灰色块的解决方法
- Socket编程实践(10) --select的限制与poll的使用
- 【每日一剂】---启动活动的最佳写法
- C#读写XML
- Socket编程实践(11) --epoll原理与封装
- [leetcode] 169. Majority Element 解题报告