constを外すのに使う const_cast<T&>(t) ですが、Tをいちいち書くのが面倒なので
そうだdecltypeを使えば楽できると思ったものの、remove_constも併用しないといけないみたいですね
参照だったらさらにremove_referenceも必要で、これじゃTがくっそ長くない限り有り難みが薄いですね
なんかもっといいやり方ないですかね?

const int i = 0;
const_cast<remove_const<decltype(i)>::type&>(i) = 1

const int& j = i;
const_cast<remove_const<remove_reference<decltype(j)>::type>::type&>(j) = 2;