ポインターを非 としてstd::is_const識別する の動作に困惑しています。私自身の の実装は、まったく同じことを行います。より一般的なテンプレート化された構造体がバージョンよりも選ばれている理由はわかりません。gcc4.7 と clang3.1-svn はどちらも同じ動作を示します。誰が何が起こっているのか説明できますか? コードを以下に示します。constconstis_const<T><const T>
#include <iostream>
#include <sstream>
#include <type_traits>
class CEmptyClass {}; 
namespace jbc 
{
  template <typename T>
  struct is_const : std::false_type {}; 
  template <typename T>
  struct is_const<const T> : std::true_type {}; 
}
int main(int argc, char* argv[])
{
  std::cout << "Is 'const CEmptyClass*' constant according to std lib : " 
    << std::is_const<const CEmptyClass*>::value << std::endl;
  std::cout << "Is 'const CEmptyClass*' constant according to jbc : " 
    << jbc::is_const<const CEmptyClass*>::value << std::endl;
}
どちらの場合もis_const<const CEmptyClass*>::value戻ります0