Рассмотрим следующий класс
template <typename T>
struct A
{
T x;
};
Теперь , другой класс имеет такой шаблон:
template <typename T, typename U>
class B
{
protected:
std::vector<U> arr;
public:
T get_x(unsigned int p) { return arr[p].x; }
};
Я хотел бы получить доступ к полю A
изнутри B
и вернуть его без изменений (т. Е. Оставить его тип как T
). Мое плохое знание шаблонов говорит о том, что для этого необходимо знать тип и T
, он должен быть одним из параметров шаблона класса B
. Однако это позволяет объявить что-то несогласованное, например B
, и в целом звучит как ненужное повторение.
T
из A :: x
и избежать двух типов шаблонов? Это похоже на повторение, поэтому я не уверен, есть ли на свете богобоязненное решение, соответствующее стандартам. Как бы то ни было, я использую GCC 4.6.2 с -std = c ++ 0x.