как уговорить компилятор?
От: nen777w  
Дата: 06.05.11 23:17
Оценка:
Чисто академический вопрос.
Хочется вот такого:

enum Eabcd { a, b, c, d };

template< Eabcd arg >
struct some_s {
   enum { value = arg; }
};

typedef std::vector< some_s<???> > v_some_s;

v_some_s v;

v.push_back( some_s<a>() );
v.push_back( some_s<b>() );
v.push_back( some_s<c>() );
v.push_back( some_s<d>() );


не хочется прибегать к наследованию.
Re: как уговорить компилятор?
От: _niko_ Россия  
Дата: 07.05.11 06:30
Оценка:
Здравствуйте, nen777w, Вы писали:

N>Чисто академический вопрос.

N>Хочется вот такого:

N>
N>enum Eabcd { a, b, c, d };

N>template< Eabcd arg >
N>struct some_s {
N>   enum { value = arg; }
N>};

N>typedef std::vector< some_s<???> > v_some_s;

N>v_some_s v;

N>v.push_back( some_s<a>() );
N>v.push_back( some_s<b>() );
N>v.push_back( some_s<c>() );
N>v.push_back( some_s<d>() );
N>


N>не хочется прибегать к наследованию.



А без наследования никак
Re[2]: как уговорить компилятор?
От: std_string Россия  
Дата: 07.05.11 07:31
Оценка:
Здравствуйте, _niko_, Вы писали:

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


N>>Чисто академический вопрос.

N>>Хочется вот такого:

N>>
N>>enum Eabcd { a, b, c, d };

N>>template< Eabcd arg >
N>>struct some_s {
N>>   enum { value = arg; }
N>>};

N>>typedef std::vector< some_s<???> > v_some_s;

N>>v_some_s v;

N>>v.push_back( some_s<a>() );
N>>v.push_back( some_s<b>() );
N>>v.push_back( some_s<c>() );
N>>v.push_back( some_s<d>() );
N>>


N>>не хочется прибегать к наследованию.



__>А без наследования никак

boost::any ?
Re[3]: как уговорить компилятор?
От: zaufi Земля  
Дата: 07.05.11 08:04
Оценка:
Здравствуйте, std_string, Вы писали:

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


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


N>>>Чисто академический вопрос.

N>>>Хочется вот такого:

N>>>
N>>>enum Eabcd { a, b, c, d };

N>>>template< Eabcd arg >
N>>>struct some_s {
N>>>   enum { value = arg; }
N>>>};

N>>>typedef std::vector< some_s<???> > v_some_s;

N>>>v_some_s v;

N>>>v.push_back( some_s<a>() );
N>>>v.push_back( some_s<b>() );
N>>>v.push_back( some_s<c>() );
N>>>v.push_back( some_s<d>() );
N>>>


N>>>не хочется прибегать к наследованию.



__>>А без наследования никак

_>boost::any ?

или boost::variant если список типов ограничен
Re[4]: как уговорить компилятор?
От: nen777w  
Дата: 07.05.11 08:11
Оценка:
_>>boost::any ?
Z>или boost::variant если список типов ограничен
ну да, такая возможность конечно есть, но ведь на самом то деле sizeof типа от этих манипуляций в данном конкретном случае не меняется, поэтому хотелось бы более чистой версии.
ладно. тема закрыта.
Re: как уговорить компилятор?
От: rusted Беларусь  
Дата: 07.05.11 08:20
Оценка:
Здравствуйте, nen777w, Вы писали:

N>Чисто академический вопрос.

N>Хочется вот такого:

Может стоит посмотреть в сторону boost::fusion?
Re: как уговорить компилятор?
От: Mr.Delphist  
Дата: 07.05.11 15:26
Оценка:
Здравствуйте, nen777w, Вы писали:

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