我正在尝试使用 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' 的成员
有人可以帮我吗?泽维尔。