From 4cb3716317207e3a6813b0d9ff779edc7fec91de Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 15 Oct 2013 07:01:17 +0200 Subject: Automatically map C++11 enum classes (strong enums) --- common/enum/test.hxx | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) (limited to 'common/enum/test.hxx') diff --git a/common/enum/test.hxx b/common/enum/test.hxx index c1609fd..98ff0e9 100644 --- a/common/enum/test.hxx +++ b/common/enum/test.hxx @@ -6,6 +6,7 @@ #define TEST_HXX #include +#include // HAVE_CXX11_ENUM enum color {red, green, blue}; @@ -18,15 +19,37 @@ struct object color color_; enum taste {bitter, sweet, sour}; taste taste_; + + enum position {left = -1, center = 0, right = 1}; + position position_; + + +#ifdef HAVE_CXX11_ENUM + enum class gender {male, female}; + enum class scale: unsigned char {one = 1, ten = 10, hundred = 100}; + enum class yesno: bool {no, yes}; + + gender gender_; + scale scale_; + yesno yesno_; +#endif + }; inline bool operator == (const object& x, const object& y) { return - x.id_ == y.id_ && - x.color_ == y.color_ && - x.taste_ == y.taste_; + x.id_ == y.id_ + && x.color_ == y.color_ + && x.taste_ == y.taste_ + && x.position_ == y.position_ +#ifdef HAVE_CXX11_ENUM + && x.gender_ == y.gender_ + && x.scale_ == y.scale_ + && x.yesno_ == y.yesno_; +#endif + ; } #endif // TEST_HXX -- cgit v1.1