Здравствуйте, alnsn, Вы писали:
A>http://www.rsdn.ru/File/21403/typeof.zip
У меня есть некоторые сомнения на счет этого кода. У меня такое чувство что сюда может вмешатся выравнивание и размер структуры может съехать.
template<class N> struct sizer
{
char _[N::value];
};
template<class IntList>
struct multi_int
{
typedef typename mpl::size<IntList>::type size;
template<class Pos>
sizer<
typename mpl::apply_if<
typename mpl::less<Pos, size>::type,
mpl::at<IntList, Pos>,
mpl::identity<mpl::int_<1> >
>::type
>
get(const Pos&);
};
ИМХО лучше так
template<class N> struct sizer
{
typedef char(&type)[N::value];
};
template<class IntList>
struct multi_int
{
typedef typename mpl::size<IntList>::type size;
template<class Pos>
typename sizer<
typename mpl::apply_if<
typename mpl::less<Pos, size>::type,
mpl::at<IntList, Pos>,
mpl::identity<mpl::int_<1> >
>::type
>::type
get(const Pos&);
};
... << RSDN@Home 1.1.3 beta 1 >>