在 Visual Studio 2022 中使用 random_device 会引发错误“尝试引用已删除的函数”

问题描述 投票:0回答:1

如果我尝试在 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;
}
random visual-c++
1个回答
0
投票

您发布的代码将在 Visual Studio 中运行 - 但前提是您将语言标准设置为 C++17(或更高版本)。 (VS 2022 默认使用 C++14 标准)。

这似乎是 Visual Studio 中的一个错误,因为据称该问题已在 C++11 和 C++14 之间的转换中得到解决:请参阅 此缺陷报告

可以更改语言标准,方法是右键单击项目,然后在弹出的属性表中选择“C/C++...语言”,在“C++语言标准”中选择C++17或更高版本下拉属性。

© www.soinside.com 2019 - 2024. All rights reserved.