TMPとFP

っていうか

sign n | n > 0  = 1
       | n == 0 = 0
       | n < 0  = -1

↓↓↓↓↓↓↓↓↓↓

template<class Integer, class = disable_if<less_equal<Iteger, zero> >::type>
struct sign : public int_<1>{ };

template<class Integer>
struct sign<Integer, enable_if<equal_to<Integer, zero> >::type>
  : public int_<0>{ };

template<class Integer>
struct sign<Integer, eable_if<less<Integer, zero> >::type>
  : public int_<-1>{ };

・・・ダメ?