ポインタ型宣言時の書き方について

この前どこかでポインタ型宣言の書き方が

int* a;//C++な人
int *b;//Cな人

になってること多いよね。みたいなエントリを見たのでちょっとこれについて。
(たぶんRSSリーダーtwitterのリンクから飛んだんだけど消息不明に。知ってる人いたらアドレス教えて)


まず、ポインタ型の宣言の仕方について、ちょっと前までは自分も

int* a;

みたいな感じに書いてました。
根拠としては単純に「int*型のaを宣言する」って見方ができるのでいいなってことだったんだけど、
この理解の仕方には微妙に問題があったり。
というのも、例えば下のようなコードを書いたときに

class Test
{
};

int main()
{
	Test* pa,pb;
	pa = new Test;
	pb = new Test;//pbはTest*型ではなくTest型なのでコンパイルエラー

	return 0;
}

みたいな事が起きる。
この程度のものならすぐに発見できるのでいいんですが、
テンプレートとかを使ったコードを書いているときにこの手のものに遭遇すると
変な特殊化が行われたりと割とひどい目にあったりします。


なので最近は、
「int*型の変数aを宣言する」ではなく
「*aするとint型になるポインタaを宣言する」
っていう理解で変数側に*を付ける派に転向したり。


まあこの辺は個人の趣味もあるのでなんとも言えないですが。