From eb61314cc5c8d224cb3bc47f40d725b7a01bb064 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 12 Feb 2013 11:03:06 +0200 Subject: Workarounds for non-standard Sun CC STL --- common/container/change-tracking/driver.cxx | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'common/container') diff --git a/common/container/change-tracking/driver.cxx b/common/container/change-tracking/driver.cxx index b4f09ad..eaf23e1 100644 --- a/common/container/change-tracking/driver.cxx +++ b/common/container/change-tracking/driver.cxx @@ -58,8 +58,9 @@ static counting_tracer tr; // complete std::vector interface. // -#if defined (HAVE_CXX11) -#if defined (__GNUC__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 7 +#ifndef _RWSTD_NO_CLASS_PARTIAL_SPEC +#if !defined (HAVE_CXX11) || \ + (defined (__GNUC__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 7) struct item {}; template class odb::vector; template class odb::vector_iterator, @@ -101,9 +102,11 @@ main (int argc, char* argv[]) if (i != ov.end ()) i = ov.end (); +#ifndef _RWSTD_NO_CLASS_PARTIAL_SPEC vector::const_reverse_iterator j (ov.rbegin ()); if (j != ov.rend ()) j = ov.rend (); +#endif } auto_ptr db (create_database (argc, argv)); @@ -369,16 +372,23 @@ main (int argc, char* argv[]) { o.s.begin ().modify () += 'a'; +#ifndef _RWSTD_NO_CLASS_PARTIAL_SPEC o.s.rbegin ().modify () += 'c'; +#endif transaction t (db->begin ()); tr.reset (t); db->update (o); +#ifndef _RWSTD_NO_CLASS_PARTIAL_SPEC assert (tr.u == 3 && tr.t == 3); +#else + assert (tr.u == 2 && tr.t == 2); +#endif assert (*db->load ("1") == o); t.commit (); } +#ifndef _RWSTD_NO_CLASS_PARTIAL_SPEC { (o.s.rbegin () + 1).modify (1) += 'a'; (o.s.rbegin () + 1).modify (-1) += 'c'; @@ -390,6 +400,7 @@ main (int argc, char* argv[]) assert (*db->load ("1") == o); t.commit (); } +#endif { o.s.mbegin (); -- cgit v1.1