ん?別にC++じゃなくたって、何の型のポインタかわかっていれば、
val+1でポインタのアドレスはサイズ分移動するだろ。

templateは<>でくくらなくてもってのは意味不明。
templateで型情報がコンパイル時に伝わってるというのは
ある意味正しいかもしれないが。