Сообщение Re[5]: Тип sizeof от 11.03.2020 8:47
Изменено 11.03.2020 9:02 Alexander G
Re[5]: Тип sizeof
Здравствуйте, _NN_, Вы писали:
_NN>В общем выяснилось, что анализатор не умеет делать подстановки constexpr функций
Ну тогда через Integer Type Selection вотктнуть нужный тип:
_NN>В общем выяснилось, что анализатор не умеет делать подстановки constexpr функций
Ну тогда через Integer Type Selection вотктнуть нужный тип:
template<std::size_t N>
struct constant_size { static const typename boost::uint_value_t<N>::least value = N; };
struct variable_size { std::size_t value; };
template<class T, std::size_t N>
constant_size<T> size(T (&v) [N]) { return {}; }
template<class T>
variable_size size(T (&v))
{
return { std::end(v) - std::begin(v) };
}
...
size(a).value;
Re[5]: Тип sizeof
Здравствуйте, _NN_, Вы писали:
_NN>В общем выяснилось, что анализатор не умеет делать подстановки constexpr функций
Ну тогда через Integer Type Selection вотктнуть нужный тип:
boost::uint_value_t может быть реализован без constexrp функций на std::conditional
_NN>В общем выяснилось, что анализатор не умеет делать подстановки constexpr функций
Ну тогда через Integer Type Selection вотктнуть нужный тип:
template<std::size_t N>
struct constant_size { static const typename boost::uint_value_t<N>::least value = N; };
struct variable_size { std::size_t value; };
template<class T, std::size_t N>
constant_size<T> size(T (&v) [N]) { return {}; }
template<class T>
variable_size size(T (&v))
{
return { std::end(v) - std::begin(v) };
}
...
size(a).value;
boost::uint_value_t может быть реализован без constexrp функций на std::conditional
template<std::size_t N>
struct uint_value_t
{
typedef typename std::conditional<
(N < 256),
std::uint8_t,
std::conditional<(N < 65536),
std::uint16_t,
... > >::type least;
}