如何解决Visual Studio 2019 c++latest 通用 URNG 函数在最新更新后无法编译
Doctor summary (to see all details,run Flutter doctor -v):
[√] Flutter (Channel dev,2.1.0-10.0.pre,on Microsoft Windows [Version 10.0.18363.1379],locale en-US)
[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[X] Chrome - develop for the web (Cannot find Chrome executable at .\Google\Chrome\Application\chrome.exe)
! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.
[√] Visual Studio - develop for Windows (Visual Studio Community 2019 16.8.3)
[√] Android Studio (version 4.1.0)
[√] VS Code (version 1.54.1)
[√] Connected device (2 available)
template<class URNG>
void TestURNG(URNG& urng)
{
// Uniform distribution used with vector
// distribution is [-5,5] inclusive
uniform_int_distribution<long> dist(-5,5);
vector<long> v;
v.resize(20);
generate(v.begin(),v.end(),[&] { return dist(urng); });
cout << "Randomized vector: ";
copy(v.begin(),ostream_iterator<long>(cout," "));
cout << endl;
// Shuffle an array.
// Notice that shuffle() takes an URNG,not a distribution
vector<string> strings = { { "H","He","Li","Be","B","C","N","O","F","Ne","Na","Mg","Al","Si","P","S","Cl","Ar","K","Ca","Sc","Ti","V","Cr","Mn","Fe" } };
shuffle(strings.begin(),strings.end(),urng);
cout << "Randomized vector<string>: ";
copy(strings.begin(),ostream_iterator<string>(cout," "));
cout << endl;
}
在 Visual Studio 2019 中使用 void TestRandom()
{
// First run: non-seedable,non-deterministic URNG random_device
// Slower but crypto-secure and non-repeatable.
random_device device;
cout << "Using random_device URNG:" << endl;
TestURNG(device);
// Second run: simple integer seed. Repeatable results
cout << "Using constant-seed mersene twister engine URNG:" << endl;
mt19937_64 constant_seed_mersene_twister_engine(mt19937_64(12345));
TestURNG(constant_seed_mersene_twister_engine);
// Third run: random_device as seed; different each run.
// Desirable for most purposes
cout << "Using non-deterministic-seed mersene twister engine URNG:" << endl;
mt19937_64 non_deterministic_seed_mersene_twister_engine(mt19937_64(device()));
TestURNG(non_deterministic_seed_mersene_twister_engine);
// Fourth run: "warm-up" sequence as as seed; different each run.
// Advanced uses. Allows more than 32 bits of randomness.
cout << "Using non-deterministic-seed \"warm-up\" sequence mersene twister engine URNG" << endl;
vector<unsigned int> seeds;
cout << "mt19937_64::state_size: " << mt19937_64::state_size << endl;
seeds.resize(mt19937_64::state_size);
generate_n(seeds.begin(),mt19937_64::state_size,ref(device));
seed_seq sequence(begin(seeds),end(seeds));
mt19937_64 non_deterministic_seed_sequence_mersene_twister_engine(mt19937_64(sequence));
TestURNG(non_deterministic_seed_sequence_mersene_twister_engine);
}
会导致以下编译错误:
c++latest
它曾经可以工作,但最近的 VS2019 更新导致它失败。我想念什么?
解决方法
最令人头疼的解析问题。
你必须写:
mt19937_64 non_deterministic_seed_sequence_mersene_twister_engine{mt19937_64(sequence)};
现在,您定义了一个函数声明。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。