しかしこういう全く同じ型だと明らかに分かる場合でもコピーコンストラクタを
呼んでくれないのはなぜ?(T_T)

#include <iostream>

template <typename T>
struct X {
X() {}
X(const T&) {
std::cout << "template constructor" << std::endl;
}
};

int main()
{
const X<int> x;
X<int> copied(x);
X<int> copied2;
copied2 = copied;
}