diff --git a/src/common/hist_util.cc b/src/common/hist_util.cc index 7f4912317..efd62d701 100644 --- a/src/common/hist_util.cc +++ b/src/common/hist_util.cc @@ -500,13 +500,13 @@ void GHistIndexBlockMatrix::Init(const GHistIndexMatrix& gmat, */ template void InitilizeHistByZeroes(GHistRow hist, size_t begin, size_t end) { - static_assert(sizeof(xgboost::detail::GradientPairInternal) % - sizeof(GradientSumT) == - 0, - ""); - auto p_data = reinterpret_cast(hist.data()); - memset(p_data + begin, '\0', (end-begin)* +#if defined(XGBOOST_STRICT_R_MODE) && XGBOOST_STRICT_R_MODE == 1 + std::fill(hist.begin() + begin, hist.begin() + end, + xgboost::detail::GradientPairInternal()); +#else // defined(XGBOOST_STRICT_R_MODE) && XGBOOST_STRICT_R_MODE == 1 + memset(hist.data() + begin, '\0', (end-begin)* sizeof(xgboost::detail::GradientPairInternal)); +#endif // defined(XGBOOST_STRICT_R_MODE) && XGBOOST_STRICT_R_MODE == 1 } template void InitilizeHistByZeroes(GHistRow hist, size_t begin, size_t end);