should use move mechanic or put another static assert
should use move mechanic or put another static assert