Visual Studio 2012中的虚假变量

时间:2012-10-08 16:32:34

标签: c++ c++11 visual-studio-2012 variadic-templates

我正在尝试创建一个带有可变数量参数的构造函数,我非常希望保持类型安全。 我用Google搜索并继续找到“人造变量”一词(例如:http://msdn.microsoft.com/en-us/library/hh567368.aspx) 但是我无法找到如何使用这些Faux变量的任何示例,我想避免直接在源文件中查找std :: tuple。

所有人都知道这些人造变量的相对简单的例子吗?

2 个答案:

答案 0 :(得分:4)

您可以使用boost预处理器库来执行此操作:

使用BOOST_PP_REPEAT的简单示例:

#include <boost/preprocessor/repetition.hpp>
#include <boost/preprocessor/arithmetic/sub.hpp>
#include <boost/preprocessor/punctuation/comma_if.hpp>

#define TINY_print(z, n, data) data

#define TINY_size(z, n, unused)                                 \
  template <BOOST_PP_ENUM_PARAMS(n, class T)>                   \
  struct tiny_size<                                             \
      BOOST_PP_ENUM_PARAMS(n,T)                                 \
      BOOST_PP_COMMA_IF(n)                                      \
      BOOST_PP_ENUM(                                            \
          BOOST_PP_SUB(TINY_MAX_SIZE,n), TINY_print, none)      \
  >                                                             \
    : mpl::int_<n> {};

BOOST_PP_REPEAT(TINY_MAX_SIZE, TINY_size, ~)

#undef TINY_size
#undef TINY_print

答案 1 :(得分:0)

现在您也可以使用November CTP并尝试其可变参数模板实现。