gpt4 book ai didi

c++ - 当作为 Lambda 实现时,auto 的扣除不起作用。错误 : before deduction of 'auto'

转载 作者:行者123 更新时间:2023-11-27 22:49:27 33 4
gpt4 key购买 nike

在这里,我实现了一个模板化函数和一个模板化 Lambda。我已经开始探索 C++14 功能,但不确定以下 lambda 有什么问题。有什么建议吗?

#include <iostream>
#include <random>
#include <algorithm>
#include <functional>

template<class T = std::mt19937, std::size_t N = T::state_size>
auto MersenneEngine() {
return T(N);
}

template<class T = std::mt19937, std::size_t N = T::state_size>
auto MersenneEngineLambda = []() {
return T(N);
};

int main() {
// your code goes here
std::cout << MersenneEngine<std::mt19937>() << std::endl;
std::cout << MersenneEngineLambda<std::mt19937>() << std::endl; // Compilation error : error: use of 'MersenneEngineLambda<std::mersenne_twister_engine...before deduction of 'auto'
return 0;
}

这是完整的代码http://ideone.com/lveJRN

最佳答案

代码没问题。

您发现您的 GCC (5.1) 版本中存在错误。这并不奇怪,因为变量模板在 GCC 5 中是全新的。

根据经验,它在 GCC 6.1.1 中或之前已修复。

Bug 67041 (更直接地说,它的骗局 bug 67350 )看起来可能相关。

关于c++ - 当作为 Lambda 实现时,auto 的扣除不起作用。错误 : before deduction of 'auto' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38946598/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com