Вызов write(42) неожиданно компилируется и пишет пустой буфер
class Buffer {
public:
Buffer(size_t capacity); // выделяет capacity байт
Buffer(const char* data, size_t n);
};
void write(const Buffer& b);
write(42); // автор хотел записать число 42
Код компилируется, в файл уходит 42 нулевых байта. Как запретить такие вызовы?
- Пометить конструктор от size_t как explicit
- Принимать Buffer в write по значению
- Удалить конструктор копирования Buffer
- Сделать size_t параметр вторым, а не первым
