以下に 2 つの簡単なコード例を示します。最初のコードは正常にコンパイルされ、2 番目のコードはコンパイル エラーが発生します (左側の演算子 ByteVector を使用する演算子 << が見つかりません...)。
2 つの例の唯一の違いは、 using ディレクティブの配置です。
なぜ失敗するのか知りたくありません(これに答えるのに十分な情報が得られませんでした)using
。
両方の例でまったく同じ動作を期待していたでしょう。
エラーなしでコンパイル
ByteVector Test()
{
using Base::operator <<;
ByteVector foo;
int bar = 1;
foo << bar;
return foo;
}
コンパイルするとエラーになる
using Base::operator <<;
ByteVector Test()
{
...same as above, without using
}
追加情報:
使用される operator<< は次のように定義されます。
template<typename T>
ByteVector& operator<<(ByteVector &, const T&){...};