可以在模板类中使用构造函数中的初始化列表吗?

问题描述:

我发现大多数关于C++模板的书不会告诉任何有关在模板类的构造函数中是否可能使用初始化列表的任何信息。可以在模板类中使用构造函数中的初始化列表吗?

例如,我有这样的代码:

template <class T> 
class Stack { 
    T* data; 
    std::size_t count; 
    std::size_t capacity; 
    enum {INIT = 5}; 
public: 
    Stack() { 
     count = 0; 
     capacity = INIT; 
     data = new T [INIT]; 
    } 

我可以用

Stack(): count(0), capacity(INIT), data(new T [INIT]) 

是更换的构造。否则编译器会告诉你吗?

我刚刚试过,VS2008说它没问题,但它似乎有点奇怪,因为一些伟大的作者不这样做(例如,Eckel在他的“C++中的思维”中)。