Игнорировать этот вопрос, только что нашел ошибку в моем коде, отметьте, чтобы удалить его
Это из "Шаблоны - полное руководство" гл.19.2
Составные типы - это типы, созданные из других типов.Простые составные типы включают простые типы, типы указателей, ссылочные типы и даже типы массивов.Они построены из одного базового типа.Типы классов и типы функций также являются составными типами, но их состав может включать несколько типов (для параметров или членов).Простые составные типы могут быть классифицированы с использованием частичной специализации.Мы начнем с общего определения класса признаков, описывающего составные типы, отличные от типов классов и типов перечисления (последние обрабатываются отдельно):
// types/type2.hpp
template<typename T>
class CompoundT { // primary template
public:
enum { IsPtrT = 0, IsRefT = 0, IsArrayT = 0,
IsFuncT = 0, IsPtrMemT = 0 };
typedef T BaseT; //This suppose to be different
typedef T BottomT; //to this! But is typedef'ed in the same way! FFS!
typedef CompoundT<void> ClassT;
};
Тип члена BaseT является синонимом для непосредственного типа, для котороготип параметра шаблона T строит.BottomT, с другой стороны, относится к окончательному типу без указателя, без ссылки и без массива, на котором построен T.Например, если T - int *, то BaseT будет int , а BottomT будет int.
Сделал это, попробовал это и угадай, что не работает.Для int ** BaseT - это int **, а для BottomT - то же самое.Для меня очевидно, что в книге есть ошибка.Как, черт возьми, один и тот же тип может быть разным?Для меня это не может.Я хотел бы знать, что должно быть там (в классе decl.), Чтобы оно заработало.
Спасибо.