1 // { dg-do assemble } 2 // GROUPS passed conversions 3 #include <iostream> 4 5 class Thing 6 { 7 public: 8 typedef enum { GOOD_THING, BAD_THING, } ThingType ; // { dg-error "" "comma" { target { ! c++11 } } } Thing(ThingType type)9 Thing (ThingType type) : thingType (type) { } ~Thing()10 ~Thing () { } 11 private: 12 ThingType thingType ; 13 } ; 14 15 class Group 16 { 17 public: 18 typedef enum { THIS_GROUP, THAT_GROUP, } GroupType ; // { dg-error "" "comma" { target { ! c++11 } } } Group(GroupType type)19 Group (GroupType type) : groupType (type), groupCount (0) { } ~Group()20 ~Group () { } append(Thing * const & entry)21 void append (Thing* const &entry) { groupCount ++ ; } GroupType()22 operator GroupType () const { return groupType ; } 23 operator int () const { return groupCount ; } // remove this and problem gone 24 25 private: 26 int groupCount ; 27 GroupType groupType ; 28 } ; 29 30 inline Group& operator += (Group& g, Thing* const t) 31 { 32 g.append (t) ; 33 return g ; // complaint is here 34 } 35 36 int main(int argc,char ** argv)37main (int argc, char** argv) 38 { 39 Group g (Group::THIS_GROUP) ; 40 41 g += new Thing (Thing::GOOD_THING) ; 42 std::cout << "Group type is " << (Group::GroupType) g << std::endl ; 43 return 0 ; 44 } 45