Обновлено
Будет ли работать эта строка кода:
boost::shared_array<struct sockaddr> addr(
reinterpret_cast<struct sockaddr *>(
(ipv6 ? new unsigned char [sizeof(struct sockaddr_in6)]
: new unsigned char [sizeof(struct sockaddr_in)])
)
);
Обратите внимание на два разных типа данных между распределением и типом, указанным в <template>
.
Оригинальный вопрос был с boost :: shared_ptr
Будет ли работать эта строка кода:
boost::shared_ptr<struct sockaddr> addr(
reinterpret_cast<struct sockaddr *>(
(ipv6 ? new unsigned char [sizeof(struct sockaddr_in6)]
: new unsigned char [sizeof(struct sockaddr_in)])
)
);
Обратите внимание на два разных типа данных между распределением и типом, указанным в <template>
.
Решение
boost::shared_array<unsigned char> address(new unsigned char [sizeof(sockaddr_in)]);
ПРИМЕЧАНИЕ. Используется тот же тип беззнакового символа с размером, точно равным необходимому.
и затем, когда я собираюсь использовать его:
bind(, (sockaddr*)address.get(), );