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"[]