4

ライブラリコードには次のものがあります。

class VeryStrictClass
{
public:
    template<typename UNKNOWN_TYPE>
    VeryStrictClass& operator<<(const UNKNOWN_TYPE & value) {
        struct can_not_format_unknown_type {};
        can_not_format_unknown_type error = value;
    }
};

それを再実装する方法はありません。

これは、次のような関数を宣言することを禁止します

template <typename MsgType>
/*check toString existance*/
VeryStrictClass& operator << (VeryStrictClass& o, const MsgType* msg) 
{
  BOOST_ASSERT(msg != NULL);
  return o << msg->toString();
}

toString() は仮想ではありません。

VeryStrictClass に入れる似たようなクラスがたくさんあります。この制約を回避する方法はありますか?

4

1 に答える 1