template<typename WriterPolicy, typename ReaderPolicy>
struct RW : WriterPolicy, ReaderPolicy
{
};
struct SharedData
{
int n;
};
struct FancyWriter : virtual SharedData
{
};
struct FancyReader : virtual SharedData
{
};
typedef RW<FancyWriter, FancyReader> FancyRW;
int main() {}
Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBXcml0ZXJQb2xpY3ksIHR5cGVuYW1lIFJlYWRlclBvbGljeT4Kc3RydWN0IFJXIDogV3JpdGVyUG9saWN5LCBSZWFkZXJQb2xpY3kKewp9OwoKc3RydWN0IFNoYXJlZERhdGEKewoJaW50IG47Cn07CgpzdHJ1Y3QgRmFuY3lXcml0ZXIgOiB2aXJ0dWFsIFNoYXJlZERhdGEKewp9OwoKc3RydWN0IEZhbmN5UmVhZGVyIDogdmlydHVhbCBTaGFyZWREYXRhCnsKfTsKCnR5cGVkZWYgUlc8RmFuY3lXcml0ZXIsIEZhbmN5UmVhZGVyPiBGYW5jeVJXOwoKaW50IG1haW4oKSB7fQ==