#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 ++没有错误信息呢?或者这是一个真正的编译器错误?
答案 0 :(得分:4)
您的代码很好,这是编译器错误。您可能希望找到最小的测试用例并进行报告。在我的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>;