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

Сообщение Re[5]: Тип sizeof от 11.03.2020 8:47

Изменено 11.03.2020 8:50 Alexander G

Re[5]: Тип sizeof
Здравствуйте, _NN_, Вы писали:


_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) };
}
Re[5]: Тип sizeof
Здравствуйте, _NN_, Вы писали:


_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;