を無視します。 GCCは、しかし、私は私はデフォルトの初期化子を使用しようとしていると思わせるエラーメッセージが表示できます:(ASTExprのみまさにこのコンストラクタを提供します)私はこのようなパブリックコンストラクタでusing ASTExpr::ASTExpr;
を交換した場合継承コンストラクタは、私がこのように定義されたクラスがあり、クラスの初期化
error: no matching function for call to ‘EmojicodeCompiler::Type::Type()’
を
ASTConcatenateLiteral(const SourcePosition &p) : ASTExpr(p) {}
すべて正常に動作します。 cppreference.comによると
:
The inherited constructors are equivalent to user-defined constructors with an empty body and with a member initializer list consisting of a single nested-name-specifier, which forwards all of its arguments to the base class constructor.
なぜ継承されたコンストラクタが動作しませんか?継承されたコンストラクタがユーザ定義のコンストラクタのように動作する場合は、type_
の値を使用する必要があります。どのコンパイラが標準に従っていますか?
これはg ++ 7.2でうまくコンパイルされます。 – Holt
@Holt Sheesh。以前のバージョンでのみ失敗した場合でも、問題を再現することはできませんでした。 – hvd
@Holt 6.2.0で試しました。しかし、その場合、私はGCCのバージョン要件をもう一度突き詰めなければならないでしょう... – idmean