2

以下のコードでマークされた2行の違いは何ですか?

template <const char *N> struct A {
    static const char *p;
    };

template <class T> struct B {
    static const char c[1];
    typedef A<B<T>::c> C;   // <---
    // typedef A<c> C;      // <---
    };

私が受け取ったエラーは次のとおりです。

test_t.C:'const char B :: c [1]'のインスタンス化:
test_t.C:7:ここからインスタンス化
test_t.C:7:内部コンパイラエラー:instantiate_decl、cp / pt.c:15628で
お願いします必要に
応じて前処理されたソースを含む完全なバグレポートを送信します。手順については、http: //gcc.gnu.org/bugs.html
を 参照してください。

4

2 に答える 2

6

「内部コンパイラエラー」は、大まかに「壊れたコード、または合理的だが紛らわしいコードを提供した可能性があります。いずれにしても、運が悪いです。次のリリースバージョンを入手して、最高のものを期待してください。 」と大まかに解釈されます。

于 2012-06-27T11:02:13.367 に答える
2

コンパイラにバグがあり、最初のフォームのコンパイルに失敗します。

2つの形式は同等であるため、2番目の形式を使用してバグを回避できます。バグが修正されているかどうかを確認するために、より新しいバージョンのコンパイラ(ある場合)を試すことも価値があるかもしれません。

于 2012-06-27T11:01:41.377 に答える