このコードは-fpermissive
でコンパイルできます。(GCC 4.9.2、3.6.0を打ち鳴らすない)
私はlarsmansの解釈に基づいて、完全なプログラムをテストした:
#include <cstdio>
class Customer {
public: Customer *Customer::getCustomer() { return this; }
};
int main()
{
std:printf("%p\n", Customer().getCustomer());
}
それは、g++ test.cpp
でコンパイルできませんでしたが、それはで(警告付き)コンパイルしましたg++ test.cpp -fpermissive
。 Even g++ test.cpp -fpermissive -ansi
およびg++ test.cpp -fpermissive -std=c++11
も機能します。
-w
では、あなたは警告を受け取ることはありませんが、必ずしも常に最良のアイディアではない場合があります。奇妙なことがあるときに通知を受けたい場合があります。
clang++ test.cpp -fpermissive
は、エラーが発生しますが、clangはパラメータ-fpermissive
を認識しているようです。おそらく誰かがそのようなコードを受け入れる方法を知っているかもしれません。
これは*警告*ではなく、*警告*ではないので、実際にコードに問題がある可能性があります(これはbtwを確認できません)。フラグはその事実を変えることはできません。 – bitmask
私は下投票とクローズリクエストを理解していません。これは古いG ++システムではなく、その上のプロダクションコードの一部です。ここでプログラミングの問題について話し合っていますか? – cateof
@bitmaskこれは以前のバージョンではエラーではなく、コンパイラに下位互換性があるかどうか尋ねました – cateof