Re[6]: BOOST_TYPEOF
От: alnsn Великобритания http://nasonov.blogspot.com
Дата: 13.07.04 10:43
Оценка:
Здравствуйте, 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>

Пиши в буст или дай мне знать, я тогда вечером напишу.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.