#include <iostream>

struct s1
{
    s1() {}
    s1(const s1&& other) { std::cout << "moved s1\n"; }
    s1(const s1& other) { std::cout << "copied s1\n"; }
};

struct s2
{
	s2() {}
    s2(s2&& other) { std::cout << "moved s2\n"; }

    s2(const s2& other) { std::cout << "copied s2\n"; }
};


s1 f1()
{
    const s1 r;
    return std::move(r);
}

s2 f2()
{
    const s2 r;
    return std::move(r);
}

int main()
{
	std::cout << "hello\n";
	s1 v1= f1();
	s2 v2 = f2();
}