C++0x コンセプト - 特定の型を持っているか

// Tはresult_typeを持っていなければならない、というコンセプト
auto concept HasResultType<typename T> {
    typename result_type = T::result_type;
}


struct hoge { typedef int result_type; };
struct hage {};


template <HasResultType T>
T::result_type foo()
{
}

int main()
{
    foo<hoge>();
    foo<hage>(); // エラー!
}