Доступ к typedef как нестатическому члену класса? - PullRequest
0 голосов
/ 23 ноября 2011

По сути, я хочу сделать что-то вроде этого:

template<typename x,typename y,typename z>
struct SomeTemplateClass {
 typedef x myType;
};

тогда ...

SomeTemplateClass<LongVariableNames,ILikePie,AndCheese> cheese;
cheese.myType i;

Таким образом, i будет иметь тип LongVariableNames.

Я знаю, что делать подобные вещи, наверное, плохая практика, но я просто хочу знать. Какой самый простой способ сделать что-то подобное?

Я имею в виду, это должно быть легко разрешено во время компиляции из-за сильной статической типизации и тому подобного. Было бы полезно иметь typeof() такую ​​же вещь, как sizeof().

1 Ответ

5 голосов
/ 23 ноября 2011

Обычно это выглядит так:

typedef SomeTemplateClass<LongVariableNames,ILikePie,AndCheese> foodType;

foodType cheese;

foodType::myType i;

В C ++ 11 вы также можете использовать decltype(cheese)::myType, но это очень уродливо.

...