Как получить тип относительно индекса времени выполнения?

Допустим, у меня есть boost::mpl::list< A, B, C ...>.

Как получить доступ к одному из этих типов, получив значение индекса во время выполнения? Это вообще возможно?


person Klaim    schedule 13.05.2011    source источник
comment
Пожалуйста, предоставьте некоторый контекст того, что вы пытаетесь выполнить.   -  person Emile Cormier    schedule 13.05.2011
comment
Может быть, вы найдете этот вопрос полезным: заголовок stackoverflow.com/questions/4798169/   -  person Nim    schedule 13.05.2011
comment
@Emile Cornier› Каким бы ни был контекст, mpl::list — это контейнер типов, обеспечивающий семантику контейнеров типов во время компиляции. Итак, вопросы ясны: у меня есть этот список типов времени компиляции, и я хочу получить тип, который находится в определенном индексе, но я получил индекс только во время выполнения, а не во время компиляции.   -  person Klaim    schedule 14.05.2011


Ответы (1)


http://www.boost.org/doc/libs/release/libs/mpl/doc/refmanual/for-each.html

вам в основном нужно перебрать весь список и ввести какое-то условное выражение: например:

struct F {
    void operator(T &t) {
        if (i_ == index) ...
        ++i;
    }
    int index = ...;
    int i_ = 0;
};
for_each< L >( F(index) );
person Anycorn    schedule 13.05.2011
comment
Я не понимаю, как эта голая ссылка отвечает на вопрос. - person Rob Kennedy; 13.05.2011
comment
Знаешь что? Я разместил этот вопрос после того, как проверил все возможности, и мне пришлось покинуть свое рабочее место. Как только я получил эту точную идею. TT___TT Думаю, я слишком устал. Все равно спасибо, это подтверждает. - person Klaim; 14.05.2011