の意味を変更します。宣言は、次のコードのシンボル
struct foo {};
struct A
{
typedef foo foo_type;
void foo();
};
GCCはコンパイラエラーを与える:
test.cpp:7:14: error: declaration of 'void A::foo()' [-fpermissive]
void foo();
^
test.cpp:1:8: error: changes meaning of 'foo' from 'struct foo' [-fpermissive]
struct foo {};
^
しかし、打ち鳴らすには、コンパイルエラーなしで、それを受け入れます。誰が正しい? typedefが削除、またはtypedef ::foo foo_type
に変更された場合、GCCと打ち鳴らす両方のコードを受け入れること
注。
本当の問題は、次のとおりです。* *は常に右打ち鳴らすのはなぜ?何のtypedefがないとき –
が、それはcf16 @ – 4pie0
不思議ではない。私はそれがあったと言っていませんでした。私はただのtypedefに言及していないエラーにもかかわらず、typedefではエラーとは何かを持っている、ということを指摘したかったです。 – HighCommander4