blob: 7eb0389a3f68291963396e45ab59847788035b49 [file] [log] [blame]
// PR c++/67557
// { dg-do run }
namespace std
{
struct string
{
typedef unsigned long size_type;
const char* _M_p;
char _M_local_buf[1];
string(const char* s) : _M_p(_M_local_buf)
{
__builtin_printf("%p constructed\n", this);
}
string(const string& s) : _M_p(_M_local_buf)
{
__builtin_printf("%p copied from %p\n", this, &s);
}
~string()
{
__builtin_printf("%p destroyed\n", this);
if (_M_p != _M_local_buf)
__builtin_abort();
}
};
}
struct StartTag
{
explicit StartTag(std::string const & tag) : tag_(tag), keepempty_(false) {}
std::string tag_;
bool keepempty_;
};
StartTag fontToStartTag() { return StartTag(""); }
struct FontTag : public StartTag
{
FontTag() : StartTag(fontToStartTag()) {}
};
int main()
{
FontTag x;
__builtin_printf("%p x.tag_ in main()\n", &x.tag_);
return 0;
}