#include <memory>
template<typename T>
using CallbackPtr = const std::shared_ptr<const T>;
template<typename C, typename T>
using CallbackFunPtr = void (C::*)(CallbackPtr<T>);
int main () {
return 0;
}
结果:
7 : internal compiler error: Segmentation fault
Please submit a full bug report, with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.7/README.Bugs> for instructions.
Compilation failed
我在这里做的事情是否超出了 C++ 标准,而 G++ 还没有错误消息?或者这是一个真正的编译器错误?
最佳答案
你的代码没问题,这是一个编译器错误。您可能想要找到最小的测试用例并报告它。在我的 gcc-4.7.1 拷贝上,这个
template<typename T> struct A{};
template<typename T> using B = const A<T>;
B<int> x;
足以给我一个ICE。罪魁祸首是这里的const
。您的示例在将 CallbackPtr 定义为
using CallbackPtr = std::shared_ptr<const T>;
关于c++ - G++-4.7.0 递归类型别名的内部编译器错误分段故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12251067/