gpt4 book ai didi

c++ - 使用 VS2010 SP1 的函数模板中的编译器错误

转载 作者:太空狗 更新时间:2023-10-29 21:48:59 24 4
gpt4 key购买 nike

为什么我会收到标记的编译器错误 (C2899)?我尝试使用 VS2010 SP1。

#include <list>
#include <vector>
#include <algorithm>

template <typename source_container_type, typename target_container_type>
void copy_all(const source_container_type& source, target_container_type& target)
{
std::for_each(begin(source), end(source), [&] (const typename source_container_type::value_type& element)
{
// error C2899: typename cannot be used outside a template declaration
// error C2653: 'target_container_type' : is not a class or namespace name
target.push_back(typename target_container_type::value_type(element));
});
}

int main()
{
std::vector<int> a;
a.push_back(23);
a.push_back(24);
a.push_back(25);

std::list<int> b;
copy_all(a, b);
}

亲切的问候
西蒙

PS:我知道我可以将 std::copy(..)std::back_inserter(..) 一起使用 - 但这不是重点。

编辑

Perreal 在评论中回答了这个问题: http://connect.microsoft.com/VisualStudio/feedback/details/694857/bug-in-lambda-expressions

编辑

请注意,我对解决方法不感兴趣。我想知道上面的代码是否应该编译。

最佳答案

您的线路有效:http://ideone.com/qAF7r

即使是古老的 g++ 4.3 也能编译它。所以这可能是您的 MS 编译器中的错误。

关于c++ - 使用 VS2010 SP1 的函数模板中的编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9466338/

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