【发布时间】:2012-11-27 20:04:58
【问题描述】:
我想知道是否可以使用 boost::mpl/preprocessor 或一些 noce C++11 特性从类类型和函数名创建函数代理。
假设我们有:
inline void set_email(const ::std::string& value);
inline void set_email(const char* value);
课内电子邮件。我们知道它有 set_email 函数,我们想创建一个类似 API 的代理类
PROXY(Email, set_email, MyEmail)
Email * email = new Email();
MyEmail * myEmail = new MyEmail(email);
并且能够调用任何 set_email 重载。是否有可能以及如何创建这样的类来代理不知道类型(仅名称)的任意数量的重载函数?
【问题讨论】:
-
对于可变参数模板和完美转发来说,这似乎是一项完美的工作,尽管这种需求值得怀疑。
-
请注意,Xeo 不仅仅是在炫耀自己的言辞——关键字确实是“可变参数模板”和“完美转发”——这都是 C++11 的特性。
标签: c++ boost c++11 boost-mpl boost-preprocessor