Информация об изменениях

Сообщение Re: Выразить в реализации ограничения на разрядность целых от 03.10.2018 13:57

Изменено 03.10.2018 14:04 SomeOne_TT

Re: Выразить в реализации ограничения на разрядность целых
Здравствуйте, _hum_, Вы писали:

__>Разрабатываю класс, который предполагает в качестве исходных данных для создания своего объекта и работы с ним сторонний массив целых чисел, для примера, типа long.

__>Как бы наиболее простым и явным образом намекнуть пользователю класса (не прибегая к справке), что массив не должен содержать целых, выходящих за 32-разряда (это важно для платформ, где long 64-разрядный)?
__>[Ограничения связаны с особенностями бинарной сериализации объектов данного класса]


Например,
static_assert((sizeof(T)<=sizeof(uint32_t)), "Usage of types longer than uint8_t not allowed") 
и
static_assert(std::is_integral<T>::value,"Non-integral types arent allowed")
Re: Выразить в реализации ограничения на разрядность целых
Здравствуйте, _hum_, Вы писали:

__>Разрабатываю класс, который предполагает в качестве исходных данных для создания своего объекта и работы с ним сторонний массив целых чисел, для примера, типа long.

__>Как бы наиболее простым и явным образом намекнуть пользователю класса (не прибегая к справке), что массив не должен содержать целых, выходящих за 32-разряда (это важно для платформ, где long 64-разрядный)?
__>[Ограничения связаны с особенностями бинарной сериализации объектов данного класса]


Например,
static_assert((sizeof(T)<=sizeof(uint32_t)), "Usage of types longer than uint8_t not allowed") 
и
static_assert(std::is_integral<T>::value,"Non-integral types arent allowed")


Только один момент есть, uint32_t определен не везде, однако количество платформ, где его нет, пренебрежимо мало.