enable_ifにdecltypeを渡すとMSVC10が落ちる

#include <iostream>
#include <utility>
#include <type_traits>

template<typename C, typename V = void>
struct enable_if : std::enable_if<C::value, V> { };

template<typename T>
void sf (T const & t, typename enable_if<decltype(t)>::type * =0)
{
	std::cout << "OK\n";
}
int main () {
	sf(1);
}


[F5]

fatal error C1001: コンパイラで内部エラーが発生しました。

decltypeに渡すものはなんでもいいっぽい(いいというか落ちるからダメなんだけど…)
std::identity(相当)を挟んでも落ちる。

g++4.{5,6} なら…

以下のようにすると通る。(VCでは落ちる。)

template<typename T> struct remref ;
template<typename T> struct remref<T&>
{ typedef T type; };

template<typename T>
void sf (T const & t, typename enable_if<typename remref<decltype(t)>::type>::type * =0)
{
	std::cout << "OK\n";
}


C++分からない。ぐぬぬ