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