我有一个非常简单的代码示例,至少对我来说,在clang分析器中会产生令人困惑的结果。
#include <random>
#include <vector>
int main() {
std::mt19937 rng;
std::vector<int> collection;
std::shuffle(begin(collection), end(collection), rng);
}
“'&gt;&gt;'的结果表达式未定义。“
这意味着什么?如何在不使用#ifndef __clang_analyzer__
的情况下解决问题?
违规行是std :: shuffle(开始(收集),结束(收集),rng);
然后从<algorithm> line 2840
warning: The result of the '>>' expression is undefined
__mask0_ = __w0_ > 0 ? _Engine_result_type(~0) >> (_EDt - __w0_) :
~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ 1 warning generated.