解説はこちら ※VC++6.0非対応 namespace shand { namespace detail { struct sfinae_types { typedef char one; typedef struct { char arr[2]; } two; }; template<typename Type> struct in_array : public sfinae_types { private: template<typename Up> static one test(Up(*)[1]); template<typename> static two test(...); public: static const bool value = sizeof(test<Type>(0)) == 1; }; } // namespace detail template <type