如果我尝试在 Visual Studio 2022 中使用 random_device,则会出现以下错误:
Severity Code Description Project File Line Suppression State Details
Error C2280 'std::random_device::random_device(const std::random_device &)': attempting to reference a deleted function 12x6 C:\Users\User\source\repos\12x6\12x6\12x6.cpp 11
但是,在 VScode 中,它工作得很好。 为什么 Visual Studio 不允许我使用它,即使它工作正常?
这是我的代码:
#include <iostream>
#include <random>
int main() {
auto seed = std::random_device{};
auto gen = std::mt19937{seed()};
auto dist = std::uniform_int_distribution<std::uint16_t>{0, 255};
for (int i = 0; i < 10; i++) {
std::cout << dist(gen) << "\n";
}
return 0;
}
您发布的代码将在 Visual Studio 中运行 - 但前提是您将语言标准设置为 C++17(或更高版本)。 (VS 2022 默认使用 C++14 标准)。
这似乎是 Visual Studio 中的一个错误,因为据称该问题已在 C++11 和 C++14 之间的转换中得到解决:请参阅 此缺陷报告。
可以更改语言标准,方法是右键单击项目,然后在弹出的属性表中选择“C/C++...语言”,在“C++语言标准”中选择C++17或更高版本下拉属性。