2
#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++ 还没有错误消息?或者这是一个真正的编译器错误?

4

1 回答 1

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>;
于 2012-09-03T16:14:31.980 回答