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 に答える