AW: [odb-users] reuse inheritance with templated base class

Marcel Nehring mne at
Wed Jul 30 04:31:01 EDT 2014

Hi Boris,

uhm, that is quite a limitation. I did not expect that.
The example I provided was only a short, self-contained, compilable example to demonstrate the error I am getting. In fact my code *does* contain persistent classes where the persistent data depends on the template argument.


-----Ursprüngliche Nachricht-----
Von: Boris Kolpackov [mailto:boris at] 
Gesendet: Dienstag, 29. Juli 2014 20:15
An: Marcel Nehring
Cc: odb-users at
Betreff: Re: [odb-users] reuse inheritance with templated base class

Hi Marcel,

Marcel Nehring <mne at> writes:

> #pragma db object optimistic
> template <class T>
> class Base

ODB does not support persistent class templates. The persistent data (m_id and m_version in your case) rarely depends on the template argument (it doesn't in your case) so what you can do is split your base into two classes:

#pragma db object optimistic
class BaseData
  #pragma db id auto
  long long m_id;

  #pragma db version
  const unsigned long long m_version;

// Note: not persistent object
template <class T>
class Base

#pragma db object
class Derived : public Base<Derived>, public BaseData {


More information about the odb-users mailing list