Re[5]: BOOST_TYPEOF
От: WolfHound  
Дата: 13.07.04 06:59
Оценка:
Здравствуйте, 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 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.