template の部分特殊化がよくわかりません(1)

loki から IsSameType を例に取ると...

template <typename T, typename U>
struct IsSameType
{
  enum { value = false };
};

template <typename T>
struct IsSameType<T, T>
{
  enum { value = true };
};

これをインスタンス化する

bool b = IsSameType::<char, short>::value;

これは良い。 b は false になる。

bool b = IsSameType::<char>::value;

これはコンパイルエラーになる。部分特殊化はあくまでも実装の手段であって I/F は変わらないって事?だから、これは上手くいくのかな?

bool b = IsSameType::<char, char>::value;

b は true になる。ちなみにコンパイラgcc

gcc (GCC) 3.4.4 (Gentoo 3.4.4-r1, ssp-3.4.4-1.0, pie-8.7.8)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.