#include #include using namespace std; struct Base { Base() { cout << __PRETTY_FUNCTION__ << endl; } Base(int a) { cout << __PRETTY_FUNCTION__ << endl; cout << "a: " << a << endl; } }; struct Left : virtual Base { Left() : Base() { cout << __PRETTY_FUNCTION__ << endl; } Left(int a) : Base(a) { cout << __PRETTY_FUNCTION__ << endl; cout << "a: " << a << endl; } }; struct Right : virtual Base { Right() : Base() { cout << __PRETTY_FUNCTION__ << endl; } Right(int a) : Base(a) { cout << __PRETTY_FUNCTION__ << endl; cout << "a: " << a << endl; } }; struct Down : Left, Right { Down() : Base(), Right(), Left() { cout << __PRETTY_FUNCTION__ << endl; } Down(int a) : Base(a+1), Right(a+2), Left(a+3) { cout << __PRETTY_FUNCTION__ << endl; cout << "a: " << a << endl; } }; int main() { std::cout << "Hello, World!" << std::endl; auto ptr = std::make_unique(); auto ptr2 = std::make_unique(1); return 0; }