小编ski*_*ris的帖子

std::array 中的编译时间范围检查

我想在编译时对 std::array 执行范围检查。下面是一个例子:

#include <iostream>
#include <array>

void rarelyUsedFunction(const std::array<double, 2>& input)
{
    std::cout << input[5] << std::endl;
}

int main()
{
    std::array<double, 2> testArray;
    rarelyUsedFunction(testArray);
}
Run Code Online (Sandbox Code Playgroud)

如果我用 g++ 编译它,则没有警告或错误,尽管对不在数组中的元素进行了未定义的访问。编译后的程序只是打印一些随机值。

g++ 中是否有编译器选项可用于在编译时执行的合适的范围/边界检查?我知道我可以添加“-D_GLIBCXX_DEBUG”,但这只会在运行时执行检查。如果我有一个不经常调用的函数,则不会触发。

我知道,不能在所有情况下都执行这样的范围检查,但在上述情况下,编译器应该能够发现问题!?

c++ g++ stdarray

5
推荐指数
1
解决办法
79
查看次数

标签 统计

c++ ×1

g++ ×1

stdarray ×1