c – 如何有条件地编译可变参数模板?

前端之家收集整理的这篇文章主要介绍了c – 如何有条件地编译可变参数模板?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否有一个宏告诉我我的编译器是否支持可变参数模板?
#ifdef VARIADIC_TEMPLATES_AVAILABLE

template<typename... Args> void coolstuff(Args&&... args);

#else

???

#endif

如果它们不受支持,我想我会用一堆重载来模拟它们.还有更好的想法?也许有预处理器库可以简化工作?

解决方法

如果可变参数模板不可用,则看起来当前版本的Boost定义了BOOST_NO_VARIADIC_TEMPLATES.这是由boost / config.hpp提供的;有关config.hpp文档,请参阅 here.

如果可变参数模板不可用,那么你可能必须用一堆重载来模拟它们,正如你所说的那样. Boost.Preprocessor图书馆可以在这里提供帮助;它旨在自动化各种重复的源代码,包括模板重载.您可以在Boost源树中搜索BOOST_NO_VARIADIC_TEMPLATES,以获取使用它来模拟可变参数模板的示例.

猜你在找的C&C++相关文章