class noncopyable
{
protected:
noncopyable() {};
~noncopyable() {};
private:
noncopyable (const noncopyable&);
const noncopyable& operator= (const noncopyable&);
};
class Root
{
};
class Fixture
:
public noncopyable
{
public:
Fixture (Root& root)
:
mRoot (root)
{
}
private:
Root& mRoot;
};
class Branch
:
public Root,
public Fixture
{
public:
Branch()
:
Fixture (*this)
{
}
};
int main()
{
Branch branch;
}
Y2xhc3Mgbm9uY29weWFibGUKewpwcm90ZWN0ZWQ6CiAgICBub25jb3B5YWJsZSgpIHt9OwogICAgfm5vbmNvcHlhYmxlKCkge307CnByaXZhdGU6CiAgICBub25jb3B5YWJsZSAoY29uc3Qgbm9uY29weWFibGUmKTsKICAgIGNvbnN0IG5vbmNvcHlhYmxlJiBvcGVyYXRvcj0gKGNvbnN0IG5vbmNvcHlhYmxlJik7Cn07CgpjbGFzcyBSb290CnsKfTsKCmNsYXNzIEZpeHR1cmUKOgogICAgcHVibGljIG5vbmNvcHlhYmxlCnsKcHVibGljOgogICAgRml4dHVyZSAoUm9vdCYgcm9vdCkKICAgIDoKICAgICAgICBtUm9vdCAocm9vdCkKICAgIHsKICAgIH0KcHJpdmF0ZToKICAgIFJvb3QmIG1Sb290Owp9OwoKY2xhc3MgQnJhbmNoCjoKICAgIHB1YmxpYyBSb290LAogICAgcHVibGljIEZpeHR1cmUKewpwdWJsaWM6CiAgICBCcmFuY2goKQogICAgOgogICAgICAgIEZpeHR1cmUgKCp0aGlzKQogICAgewogICAgfQp9OwoKaW50IG1haW4oKQp7CiAgICBCcmFuY2ggYnJhbmNoOwp9