忽略这个问题,才发现在我的代码错误,标志它类型检测
这是“完全指南模板”中删除。 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是相同的。对我来说,很明显,这本书有一个错误。如何在地球上相同的typedef'ed类型可以是不同的?对我来说它不能。我想知道应该在那里(在阶级decl。),使其工作。
谢谢。
为什么要删除它的标志?你可以自己删除它 – 2010-10-09 16:50:08
@ArmenTsirunyan,显然,他不能。你回答了他的问题。我相信你知道,只有在没有得到回答的情况下,主人才能删除问题:) – azizbekian 2013-03-02 10:52:25