GetComputerNameA
- именно BOOL
.BOOL
является псевдонимом для int
, значение которого неявно приводится к char
чтобы соответствовать одной из перегрузок operator =
у std::string
.'\01'
или '\00'
внутри. Но к ошибке трансляции это не приводит потому что все спокойно неявно приводится.'FIO'
имеет, внезапно, тип int
и значение примерно 4606287
.unsigned char
не подходит для подмены. Стандартом разрешены только char
и std::byte
.uint8_t
или чем-то подобным.alignas(alignof(T)) uint8_t buffer[sizeof(T) * capacity];
std::byte
, т.к. только он и char
формально позволят тебе подмену типа на T*
без UB. А uint8_t
формально является unsigned int
длиной в 8 бит. Думаю, char
тебе тут не понравится, поэтому предлагаю std::byte
.
Мне интересно понять, для чего существует первый участок кода, который оформлен в
if (size < maxSize)
и для чего существует второй - который под первым.Также интересно понять что такое эти
size
иmaxSize
. А так же - почему функция называетсяadd
и имеет такие параметры.Пока это всё непонятно, в результате чего ответить на вопрос возможным не представляется.