gpt4 book ai didi

c++ - 模板类成员方法中的自动 lambda : does not name a type

转载 作者:行者123 更新时间:2023-11-30 01:56:50 25 4
gpt4 key购买 nike

为什么我无法编译以下代码(使用 g++ 4.7.1)?

#include <set>

template<typename T>
class Problem
{
public:
void f();

std::set<int> dummyvalue;
};

template<typename T>
void Problem<T>::f()
{
auto mytestlambda = [this](){
dummyvalue.clear();
};
}

int main()
{
return 0;
}

我收到以下错误:

main.cpp: In member function 'void Problem<T>::f()':
main.cpp:17:10: error: 'mytestlambda' does not name a type

我在检查无法调用“clear()”方法的问题时遇到了这个问题。

添加“-std=c++11”确实让我解决了真正的问题:

main.cpp: In lambda function:
main.cpp:18:26: error: no matching function for call to 'std::set<int>::clear() const'
main.cpp:18:26: note: candidate is:
In file included from /usr/include/c++/4.7/set:61:0,
from main.cpp:1:
/usr/include/c++/4.7/bits/stl_set.h:580:7: note: void std::set<_Key, _Compare, _Alloc>::clear() [with _Key = int; _Compare = std::less<int>; _Alloc = std::allocator<int>] <near match>
/usr/include/c++/4.7/bits/stl_set.h:580:7: note: no known conversion for implicit 'this' parameter from 'const std::set<int>*' to 'std::set<int>*'

为什么这里涉及'const'?

最佳答案

这是 GCC 4.7 中的一个错误。升级到 4.8 可以修复它。

显然 GCC 4.7 错误地将 this 捕获为 const

关于c++ - 模板类成员方法中的自动 lambda : does not name a type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19391523/

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