[odb-users] mapping complex, templatized value types

Christian Sell christian at gsvitec.com
Sat Sep 19 12:39:11 EDT 2015


Hello Boris,
 
I have been able to work around the max_align error by adding a #include
<cstddef> at the top of the header file containing the mapped classes. This
seems to be an issue with gcc versions.
 
I then tried the stuff you gave, and it worked. I have looked into the issues
with my classes, and it seems to me that the problem lies with the code
generated by odb, which is not compilable for my classes (the set_value method
is generated with 4 instead of 3 parameters). I have everything packaged in a
small sample app, which I could mail to you.

regards,
Christian


> Boris Kolpackov <boris at codesynthesis.com> hat am 19. September 2015 um 15:55
> geschrieben:
>
>
> Hi Christian,
>
> Christian Sell <christian at gsvitec.com> writes:
>
> > template instances do not work, neither directly nor through
> > alias or typedef
>
> Strange, this should work and appear to work for me:
>
> $ cat test.hxx
>
> #include <memory>
> #include <utility>
>
> using int_pair = std::pair<int, int>;
> #pragma db value(int_pair) type("TEXT")
>
> using shared_short_pair = std::shared_ptr<std::pair<short, short>>;
> #pragma db value(shared_short_pair) type("TEXT")
>
> #pragma db object
> struct object
> {
> #pragma db id
> int id;
>
> int_pair ip;
> std::pair<int, int> ip1;
>
> std::shared_ptr<int_pair> sip; // Ok, shared_ptr is a wrapper (Section 7.3).
>
> shared_short_pair ssp;
> std::shared_ptr<std::pair<short, short>> ssp1;
> };
>
> $ odb -d sqlite -s --std c++11 test.hxx
>
> Can you try to adjust this example to reproduce your problem?
>
> Boris
Christian Sell

GS Vitec GmbH
Im Ziegelhaus 6-8
D-63571 Gelnhausen

mail: christian at gsvitec.com
mobil: +49 (0) 173 5384289

Tel: +49 (0) 6051 601.26-90
Fax: +49 (0) 6051 601.26-91



More information about the odb-users mailing list