From 67d06f9697793f987afa08bc1c82a9d2670c9917 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 17 Jan 2014 12:49:09 +0200 Subject: Handle query column exporting for composite value types A composite value is represented in query_columns as a nested struct. Even though the query_columns template instantiation is exported, VC++ for some reason doesn't appear to also export the nested structs. To work around this, nested structs have to have the export macro in the declaration. But that's not it: we also have to declare the nested structs extern, just like the outer template instantiation itself. --- odb/context.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'odb/context.cxx') diff --git a/odb/context.cxx b/odb/context.cxx index 352cb51..ef6ef9c 100644 --- a/odb/context.cxx +++ b/odb/context.cxx @@ -2345,14 +2345,14 @@ strlit (string const& str) } void context:: -inst_header (bool decl) +inst_header (bool decl, bool omit_exp) { if (decl && !ext.empty ()) os << ext << " "; os << "template struct"; - if (!exp.empty ()) + if (!omit_exp && !exp.empty ()) { // If we are generating an explicit instantiation directive rather // than the extern template declaration, then omit the export symbol -- cgit v1.1