MSVC7.1 でもまだ SFINAE の実装は鬼門だよ,の実例

boost::transform_iterator の異なる instantiation 間の変換可能性の制御は SFINAE に基づく実装なんですぐわ,

BOOST_MPL_ASSERT((
    boost::is_convertible<
        boost::transform_iterator< int (*)( int ), std::vector< int >::iterator >
      , boost::transform_iterator< int (*)( int ), std::vector< int >::const_iterator >
      > ));

上のテスト MSVC7.1 だと false negative だにゃー. MSVC7.1 でもまだ SFINAE 周りに難があることを実感. MSVC8.0 あるいは GCC 3.4.x, 4.0.x, 4.1.x あたりはちゃんと通りまする.