gpt4 book ai didi

c++ - 如何处理来自核心准则检查器的有关gsl::at的静态分析警告?

转载 作者:行者123 更新时间:2023-12-02 10:35:55 27 4
gpt4 key购买 nike

我在Visual Studio中为我的项目激活了静态分析。核心准则检查器说,我应该使用gsl::at进行订阅。但是我的代码已保存。摆脱此警告的最干净方法是什么?我应该禁用它吗?我应该以不同的方式编写代码吗?我应该在引入支票开销时使用gsl::: at吗?我的代码是:

template <typename T, size_t N>
void increase(T(&data)[N])
{
for (size_t i = 0; i < N; ++i)
data[i] +=1;
}

最佳答案

我自己找到了解决方案。因为大小是在编译时已知的,所以可以使用std::array,std::get和std::index_sequence。如果索引超出范围,则std::get会导致编译错误。不再需要运行时检查。

template <typename... Ts>
constexpr void noop(Ts...) noexcept {}

template <typename T, size_t N, size_t... I>
constexpr void increase(std::array<T, N>& data, std::index_sequence<I...>) noexcept
{
noop((std::get<I>(data) += 1)...);
}

template <typename T, size_t N>
constexpr void increase(std::array<T, N>& data) noexcept
{
increase(data, std::make_index_sequence<N>{});
}

关于c++ - 如何处理来自核心准则检查器的有关gsl::at的静态分析警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60335311/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com