Проблема в том, что инициализатор члена по умолчанию (начиная с C ++ 11) поддерживает только инициализатор со знаком равенства (или скобками), но не инициализатор скобок.
Вы можете
template<int D>
class BigInt
{
public:
std::vector<short> digit = std::vector<short>(D, 0);
};
Вы также можете использовать список инициализаторов членов в конструкторе вместо инициализатор члена по умолчанию .
template<int D>
class BigInt
{
public:
std::vector<short> digit;
BigInt() : digit(D, 0) {}
};
BTW: std::vector<short>(D, 0)
имеет тот же эффект как std::vector<short>(D)
; вы можете использовать последний для удобства.