Boost.PFTO

  • VC6やeVC4でPartial Function Template Orderingが使える
  • ディスパッチ用の引数、'BOOST_PFTO int'を"primary"に、'int'をoverloadする方に加える
  • BOOST_PFTOはlongと定義されていて、0で呼び出すとintが優先されてoverloadした方が呼ばれる
  • Boost.Serializationで使われている (file_version引数がディスパッチ引数を兼ねている)


[]#include[][] <boost/pfto.hpp>[]

[]template[]< []class[] []T[] >
[]void[] []f[]([]T[]& []x[])
{
[]f_[]([]x[], 0);
}


[]template[]< []class[] []T[] >
[]void[] []f_[]([]T[]& []x[], []BOOST_PFTO[] []int[])
{
[]ATLTRACE[]([]_T[]([]"f_ : Any type"[]));
}

[]template[]< []class[] []KeyT[] >
[]void[] []f_[]([]ATL[]::[]CSimpleArray[]<[]KeyT[]>& []arr[], []int[])
{
[]ATLTRACE[]([]_T[]([]"f_ : CSimpleArray"[]));
}

[]ATL[]::[]CSimpleArray[]<[]char[]> []arr[];
[]f[]([]arr[]); []// "f_ : CSimpleArray"[]