From 644cba591ff6ec046ac4274b7c343dead847736e Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 9 Nov 2015 18:14:37 +0200 Subject: Make database class move-constructible This means it can be returned by value from a function in C++11. --- odb/database.hxx | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'odb/database.hxx') diff --git a/odb/database.hxx b/odb/database.hxx index 8ee5c55..510b28b 100644 --- a/odb/database.hxx +++ b/odb/database.hxx @@ -32,6 +32,7 @@ #include #include #include +#include #include #include @@ -45,6 +46,18 @@ namespace odb virtual ~database (); +#ifdef ODB_CXX11 + database (database&&) = default; +#endif + + private: + database (const database&); + database& operator= (const database&); + +#ifdef ODB_CXX11 + database& operator= (const database&&); +#endif + // Object persistence API. // public: @@ -504,10 +517,6 @@ namespace odb protected: database (database_id); - private: - database (const database&); - database& operator= (const database&); - protected: virtual connection_type* connection_ () = 0; @@ -621,7 +630,7 @@ namespace odb tracer_type* tracer_; query_factory_map query_factory_map_; - mutable details::mutex mutex_; + details::unique_ptr mutex_; // Dynamic for move support. mutable schema_version_map schema_version_map_; std::string schema_version_table_; unsigned int schema_version_seq_; -- cgit v1.1