Re[2]: структура из типов
От: Vinick Россия  
Дата: 29.09.06 08:00
Оценка: :)
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, Vinick, Вы писали:


V>>Получать и устанавливать тип от FunctionMap можно и по индексу....

V>>Т.е нужен такой хитрый compile-runtime полиморфизм.

К>Где же это compile-time, когда самый что ни на есть run-time.


Вобще-то я надеялся, что будет работать что-то типа такого
struct A {
    void f() { std::cout << "A()" << std::endl; }
};
struct B {
    void f() { std::cout << "B()" << std::endl; }
};
int main()
{
  using namespace boost;
  typedef mpl::map<mpl::pair<mpl::int_<0>,void> > map;
  int i=1;
  if( i ==1 )
    {
      typedef  mpl::insert<map,mpl::pair <mpl::int_<1>, A> >::type map1;
    }
  else
    typedef mpl::insert<map,mpl::pair <mpl::int_<1>,B> >::type map1;

  typedef  mpl::at<map1,mpl::int_<1> >::type S;
  S s;
  s.f();
  return 0;
}

Но судя по всему такое невозможно.


К>Если бы тип аргумента (Circle) был известен заранее, до конструирования FunctorMap, — то проблем нет.

К>
К>template<class T>
К>struct FunctorMap
К>{
К>    function< void(*)(T&) > rotate;
К>    function< void(*)(T&) > draw;
К>

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