В системе с:
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
std::atomic<uint8_t>::is_always_lock_free // => false
std::atomic<uint16_t>::is_always_lock_free // => true
По моему мнению, тип
std::atomic<uint_least8_t>
будет 8 бит и не будет блокироваться.
Если да, то что я должен писать, если я хочу, чтобы атомный тип составлял не менее 8 бит и всегда блокировался? (при условии, что такой тип существует) Есть ли лучшая альтернатива, чем:
std::atomic<
typename std::conditional<
std::atomic<uint8_t>::is_always_lock_free,
uint8_t,
uint16_t
>::type
>
(для простоты я не включил код, if std::atomic<uint16_t>
не заблокирован)