2

可変数の引数をとるコンストラクターを作成しようとしていますが、タイプセーフを維持したいと思っています。私はグーグルで検索し、「Faux variadics」という用語を見つけ続けました(例: http://msdn.microsoft.com/en-us/library/hh567368.aspx )しかし、これらの使用方法の例を見つけることができませんstd::tuple のソース ファイルを直接調べる必要はありません。

では、これらの Faux 変数の比較的単純な例を知っている人はいますか?

4

2 に答える 2

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
于 2012-10-08T16:47:12.140 に答える
0

11 月の CTP を使用して、可変個引数テンプレートの実装を試すこともできます。

于 2012-12-02T21:49:32.467 に答える