#include <iostream>

class myclass{
public:
    myclass(const myclass &other){std::cout << "copy\n";}
    myclass(myclass &&other){std::cout << "move\n";}

    template<typename Special>
    myclass(Special &&arg){std::cout << "special\n";}
};

int main() {
    const myclass c1(42);      // special: int
    myclass c2(c1);            // copy
    myclass c3(c2);            // special: myclass& (non const)
    myclass c4(std::move(c3)); // move
    

}