gcc/g++ 内部错误(c++ 模板化 lambda)
gcc/g++ internal error (c++ templated lambda)
我只是对我的程序进行了一些更改,突然间 g++ 抱怨内部编译器错误。
然而,Clang 编译它没有任何问题,也没有给出任何警告,这表明任何奇怪的东西。
我把问题归结为:
#include <functional>
template<typename T>
class A{
T someVar;
};
template<typename T>
class B {
int x;
std::function<A<double>(A<int>&)> someLambda = [&](A<int>& aInt){
int xVar = x;
A<double> aRet;
return aRet;
};
};
int main(int argc, char** argv){
B<int> a;
return 0;
}
我尝试了 GCC 4.9.2 和 4.8.4,都失败了(内部编译器错误)。
我使用的标志:
g++ -std=c++11 -O0 -g -Wall main.cpp -o gccBin
clang++ -std=c++11 -O0 -g -Wall main.cpp -o clangBin
main.cpp: In instantiation of 'struct B<int>::<lambda(class A<int>&)>':
main.cpp:10:7: required from here
main.cpp:14:24: internal compiler error: in tsubst_copy, at cp/pt.c:12569
int xVar = x;
^
libbacktrace could not find executable to open
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
正如我提到的,Clang++(3.5.1) 编译它没有问题。
我也试过多台机器,到处都一样
我是否忽略了某种错误?我在互联网上搜索了一下,我能找到的唯一类似问题现在应该已经解决了(如错误追踪器所述)。
也许有人可以在他们的机器上尝试 运行 这段代码或提供其他建议?
谢谢,
拉撒路
这是一个编译器错误。请继续向 GCC 人员提交错误报告!
我只是对我的程序进行了一些更改,突然间 g++ 抱怨内部编译器错误。
然而,Clang 编译它没有任何问题,也没有给出任何警告,这表明任何奇怪的东西。
我把问题归结为:
#include <functional>
template<typename T>
class A{
T someVar;
};
template<typename T>
class B {
int x;
std::function<A<double>(A<int>&)> someLambda = [&](A<int>& aInt){
int xVar = x;
A<double> aRet;
return aRet;
};
};
int main(int argc, char** argv){
B<int> a;
return 0;
}
我尝试了 GCC 4.9.2 和 4.8.4,都失败了(内部编译器错误)。
我使用的标志:
g++ -std=c++11 -O0 -g -Wall main.cpp -o gccBin
clang++ -std=c++11 -O0 -g -Wall main.cpp -o clangBin
main.cpp: In instantiation of 'struct B<int>::<lambda(class A<int>&)>':
main.cpp:10:7: required from here
main.cpp:14:24: internal compiler error: in tsubst_copy, at cp/pt.c:12569
int xVar = x;
^
libbacktrace could not find executable to open
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
正如我提到的,Clang++(3.5.1) 编译它没有问题。 我也试过多台机器,到处都一样
我是否忽略了某种错误?我在互联网上搜索了一下,我能找到的唯一类似问题现在应该已经解决了(如错误追踪器所述)。
也许有人可以在他们的机器上尝试 运行 这段代码或提供其他建议?
谢谢,
拉撒路
这是一个编译器错误。请继续向 GCC 人员提交错误报告!