以下代码可以在gcc 2.9到4.4版本下运行,但无法在4.5版本下运行:
struct Pass {
};
int main(void){
Pass **passes = new ( Pass (*[ 10 ]) );
}
使用gcc 4.5时出现的具体错误信息是:
prob.cc: In function ‘int main()’:
prob.cc:6:31: warning: lambda expressions only available with -std=c++0x or -std=gnu++0x
prob.cc:6:38: error: no matching function for call to ‘Pass::Pass(void (&)())’
prob.cc:2:1: note: candidates are: Pass::Pass()
prob.cc:2:1: note: Pass::Pass(const Pass&)
在添加所请求的标记后,初始警告将被静默,但这并不能解决问题。 有人能否解释一下如何解决这个问题?这段话来自我正在维护的一些晦涩的C ++代码,而我只了解有限的C ++知识。
vector
对于新代码来说非常好,我全力推荐它,但是在这种特定情况下,由不太理解它的人修改已有代码,恐怕这不是正确的答案。 - Mark Ransom