Можно ли использовать список инициализации в конструкторах в шаблонных классах? - PullRequest
2 голосов
/ 23 октября 2008

Я считаю, что большинство книг, касающихся шаблонов 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])

Ответы [ 2 ]

4 голосов
/ 23 октября 2008

Да. Компилятор сказал вам иначе?

0 голосов
/ 23 октября 2008

Я только что попробовал, и VS2008 говорит, что все в порядке, но это кажется немного странным, потому что некоторые великие авторы этого не делают (например, Экель в своей книге «Мышление в C ++»).

...