【发布时间】:2018-08-08 17:41:11
【问题描述】:
我的别名模板有问题,因为我的代码必须与 VS 2012 兼容,它不支持别名模板。
假设我有一个别名模板,例如:
template<typename A, typename B> using foo = bar<A,B>;
那么能够做这样的事情会很方便:
#ifdef NO_ALIAS_TEMPLATE_AVAILABLE
#define foo<x,y> bar<x,y>
#else
template<typename A, typename B> using foo = bar<A,B>;
#endif
我能做的最好的就是
#define foo(x,y) bar<x,y>
为了代码的可读性,我不想用圆括号替换我所有代码中的所有模板特化。
有没有办法让一个带有分隔符<> 的宏作为它的参数?或者我的问题没有简单的解决方案?如果不是,如何实现与别名模板的严格等价?
【问题讨论】:
标签: c++ templates macros alias