C++ C++;,模板专门化问题

C++ C++;,模板专门化问题,c++,templates,specialization,C++,Templates,Specialization,我在模板类专门化方面有问题,请参阅下面的代码 template <typename T> class Point { private T x, y; typedef T Type; public: Point ( const T & x_, const T & y_) : x ( x_ ), y ( y_ ) {} }; template <typename Item&

我在模板类专门化方面有问题,请参阅下面的代码

template <typename T>
class Point
{
    private
            T x, y;
            typedef T Type;

    public:

            Point ( const T & x_, const T & y_) : x ( x_ ), y ( y_ ) {}
};

template <typename Item>
struct TItems
{
    typedef std::vector <Item> Type;
};


template <typename Item>
class Container
{
    protected:
            typename TItems <Item>::Type items;

    public:
            typedef Item type;
};   
模板
类点
{
私有的
tx,y;
T型;
公众:
点(常数T&x_,常数T&y_):x(x_),y(y_){
};
模板
结构滴度
{
typedef std::向量类型;
};
模板
类容器
{
受保护的:
typename TItems::类型项;
公众:
类型定义项目类型;
};   
是否可以专门化点的容器类

更新问题:

我尝试了以下代码,它有效吗

template <typename T>
class Container < Point <T>  >
{

};

int _tmain(int argc, _TCHAR* argv[])
{
return 0;

Container <Point <double> > points;
}
模板
类容器
{
};
int _tmain(int argc,_TCHAR*argv[]
{
返回0;
货柜站;
}

是的,您可以使用该类型的
点专门化您的类

编辑:

我试过下面的代码,是吗 有效吗

如果您尝试过以下代码,您不知道它是否已编译吗?0_o

int _tmain(int argc, _TCHAR* argv[])
{
Container <Point <double> > points;
return 0; // return should be here nor program will exit before creating Container <Point <double> > points;
}
int-tmain(int-argc,_-TCHAR*argv[]
{
货柜站;
return 0;//return应该在这里,程序在创建容器点之前也不会退出;
}

可以,是的,但是你的语法不太正确。目前,编译器不知道
t
是什么,因此您必须告诉它它是一个模板参数:

 template<typename T>
 class Container<Point<T> > { };
模板
类容器{};

谢谢,我在你发布答案的同时更正了我的代码:-)
\u tmain
不是一个合法的函数名,所以它编译的事实对代码是否合法没有多大帮助。我想他正在使用visual studio。@Dennis,
\u tmain
怎么不是一个合法的函数名?它是一个有效的标识符,甚至不是保留的。@Ben:在全局范围中,以下划线开头的名称是保留的。重要的是,简单地编译代码意味着准确性,但不能保证准确性。@Dennis:为实现保留,此实现指定它是一个扩展到入口点名称的宏(
main
wmain
)。