Я пытаюсь заменить глобальный размер буфера на тот, который можно изменить для тестов.Текущий код выглядит примерно так:
static const uint32_t BUFFER_SIZE = 1 << 8;
class BufferWrapper {
.
.
.
char buffer_[BUFFER_SIZE];
};
Это вызывает проблему, когда я пытаюсь изменить BUFFER_SIZE для тестов.Таким образом, я надеялся сделать BUFFER_SIZE константой шаблона и иметь значение по умолчанию для указанной константы, чтобы мне нужно было указывать его только во время тестов, что-то вроде:
static const uint32_t BUFFER_SIZE = 1 << 8;
template <uint_32 SIZE = BUFFER_SIZE>
class BufferWrapper {
.
.
.
char buffer_[SIZE];
};
Таким образом, предыдущие объявления могутпо-прежнему компилируется как:
BufferWrapper buf
Но во время теста я мог бы написать что-то вроде этого, чтобы проверить буфер размером 1 КБ:
BufferWrapper<1024> test_buf;
Мой вопрос, возможно ли предоставитьпо умолчанию для значения шаблона, и как бы я это сделал?Когда я объявляю что-то вроде BufferWrapper buf;
, я получаю сообщение об ошибке:
error: use of class template 'BufferWrapper' requires template arguments; argument deduction not allowed in function prototype