explicit2.C   [plain text]


// { dg-do assemble  }

class string {
public:
  string(const char*) { } 
  explicit string(int size) { }
}; 

void foo(string) { }

string bar() {
  foo("hello");		// ok
  foo(string(2));	// ok
  foo(2);		// { dg-error "" } no implicit conversion from int to string
  string x = 2;		// { dg-error "" } no implicit conversion from int to string
  string y(2);		// ok
  foo((string)2);	// ok
  return 2;		// { dg-error "" } no implicit conversion from int to string
}

class A : string {
public:
  A() : string(2) { }	// ok
};