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' のメンバーではありません
誰かがこれを手伝ってくれますか?ザビエル。