From 4cb3716317207e3a6813b0d9ff779edc7fec91de Mon Sep 17 00:00:00 2001
From: Boris Kolpackov <boris@codesynthesis.com>
Date: Tue, 15 Oct 2013 07:01:17 +0200
Subject: Automatically map C++11 enum classes (strong enums)

---
 libcommon/common/config-vc.h | 6 ++++++
 libcommon/common/config.hxx  | 7 +++++++
 2 files changed, 13 insertions(+)

(limited to 'libcommon')

diff --git a/libcommon/common/config-vc.h b/libcommon/common/config-vc.h
index 17d1bd0..fe14255 100644
--- a/libcommon/common/config-vc.h
+++ b/libcommon/common/config-vc.h
@@ -15,6 +15,12 @@
 #if (defined(_MSC_VER) && _MSC_VER >= 1600) || \
     (defined(ODB_MSC_VER) && ODB_MSC_VER >= 1600)
 #  define HAVE_CXX11
+// Strongly typed enums are supported starting from VC++11.
+//
+#  if (defined(_MSC_VER) && _MSC_VER >= 1700) || \
+      (defined(ODB_MSC_VER) && ODB_MSC_VER >= 1700)
+#    define HAVE_CXX11_ENUM
+#  endif
 #endif
 
 #endif /* LIBCOMMON_COMMON_CONFIG_VC_H */
diff --git a/libcommon/common/config.hxx b/libcommon/common/config.hxx
index da45841..08cf0e5 100644
--- a/libcommon/common/config.hxx
+++ b/libcommon/common/config.hxx
@@ -9,6 +9,13 @@
 #  include <common/config-vc.h>
 #else
 #  include <common/config.h>
+
+// GCC supports strongly typed enums from 4.4 (forward -- 4.6),
+// Clang -- 2.9 (3.1).
+//
+#  ifdef HAVE_CXX11
+#    define HAVE_CXX11_ENUM
+#  endif
 #endif
 
 #endif // LIBCOMMON_COMMON_CONFIG_HXX
-- 
cgit v1.1