?????????£???????????????????????????????????????£???????????£?
template<class TL?? class T> struct IndexOf;
// ????????? typelist ??????? -1.
template<>
struct IndexOf<NullType?? T>
{
enum { value = -1 };
};
// ????????????????????????????
template<class T?? class Tail>
struct IndexOf<Typelist<T?? Tail>?? T>
{
enum { value = 0 };
};
// ???????????????????????????? Tail ?н??в????
template<class Head?? class Tail?? class T>
struct IndexOf<Typelist<Head?? Tail>?? T>
{
enum { in_tail = IndexOf<Tail?? T>::value };
// ?????????????????ж??T ????? Tail ?д????
enum { value = (in_tail >= 0)? 1 + in_tail: -1 };
};
?????????????????????????????? c++ ???????????????(?????????????????????????????????????????)????????????????????????????е???????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????
????????????????ε??????????á?
????????????? c++ ?????????????к??????????????????????????????????????????????????????????У???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????boost spirit ?? boost proto. ???????????飬???????????á?????????? spirit??????????????????????????????????漼???????????????????????????ú??????????? proto?? ???????????塣
?????????????????? c++11 ?????????Щ????????????????????????????????????????? variadic parameter ?????????????????????????????????c++ ????????10???????????????????????????????????????? static_if??concept ??????????????????仯????????????????????????????