// PR c++/90393 | |
// { dg-do run } | |
int c, d; | |
struct string { | |
string(const char *p): s(p) { ++c; } | |
~string() { ++d; } | |
string(const string& str): s(str.s) { ++c; } | |
const char* s; | |
bool empty() const { return !s; } | |
}; | |
string foo() | |
{ | |
string s("foo"); | |
return s.empty() ? throw "empty" : s; | |
} | |
int main() | |
{ | |
foo(); | |
if (c != d) | |
__builtin_abort(); | |
} |