0
次のコードはうまく構築されますが、オーバーロードされたテンプレート演算子は呼び出されません。何故ですか? main()
ファンクションはx
の代わりに120
を出力します。入れ子型のオーバーロード演算子
#include <iostream>
namespace foo
{
struct bar
{
enum Type { x = 'x', y = 'y' };
};
template<typename T> std::ostream& operator<<(std::ostream& s, typename T::Type o) { return s << char(o); }
}
int main()
{
foo::bar::Type t{ foo::bar::x };
std::cout << t;
}
私の実際のコードには、それらに定義されている型enumを持つ複数のクラスがあります。私はそれらのすべてのために演算子<<を定義する必要がないようにしたい。 – BlindDriver
@BlindDriverなぜそれが動作しないのかを理解したい場合は、タイプ控除を読み上げる必要があります。コードの重複を最小限に抑えるためにマクロを書くか、一度に1つずつ書き出す必要があります。 – SirGuy
はい、あなたが参照した投稿を読み、私のコードがうまくいかない理由を見ました。私はちょうど代替があることを望んでいた。とにかく助けてくれてありがとう! – BlindDriver