0

ODB を使用しようとしていますが、std::atomic に関するエラーが発生します。私はこれを読みました: ODBメーリングリストの同じ問題 そこで、ファイルwrapper-traits.hxxでstd::atomicのodb::wrapper_traits特殊化を定義しようとしました。追加してこれを行いました:

   // Specialization for odb::atomic.
  template <typename T>
  class wrapper_traits< std::atomic<T> >
  {
  public:
    // T can be const.
    //
    typedef T wrapped_type;
    typedef nullable<T> wrapper_type;

    // T can be const.
    //
    typedef
    typename odb::details::meta::remove_const<T>::result
    unrestricted_wrapped_type;

    static const bool null_handler = true;
    static const bool null_default = true;

    static bool
    get_null (const wrapper_type& n)
    {
      return n.null ();
    }

    static void
    set_null (wrapper_type& n)
    {
      n.reset ();
    }

    static const wrapped_type&
    get_ref (const wrapper_type& n)
    {
      return *n;
    }

    static unrestricted_wrapped_type&
    set_ref (wrapper_type& n)
    {
      if (n.null ())
        n = unrestricted_wrapped_type ();

      return const_cast<unrestricted_wrapped_type&> (*n);
    }
  };

しかし、Shema を取得しようとすると、まだエラーが発生します ( :odb -d -v mysql --generate-query --generate-schema *.h を使用):

/usr/local/include/odb/wrapper-traits.hxx:277:30: エラー: '<b>atomic' は '<b>std' のメンバーではありません

誰かがこれを手伝ってくれますか?ザビエル。

4

1 に答える 1