template< typename Target                 , typename Source                 , bool Unlimited // string representation of Source is unlimited                 , typename CharT                 >         struct lexical_cast, Source, Unlimited, CharT>         {             typedef BOOST_DEDUCED_TYPENAME                 deduce_char_traits,Source>::type traits;             typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<                 lcast_streambuf_for_target >::value ||                 lcast_streambuf_for_source::value               , std::basic_streambuf               , lexical_streambuf_fake               >::type base;             boost::optional operator()(                 BOOST_DEDUCED_TYPENAME boost::call_traits::param_type arg,                 CharT* buf, std::size_t src_len)             {                 BOOST_DEDUCED_TYPENAME boost::mpl::if_c<                     Unlimited                   , detail::lexical_stream,Source,traits>                   , detail::lexical_stream_limited_src                   >::type interpreter(buf, buf + src_len);                 if(interpreter << arg) {                     boost::optional result;                     if(interpreter >> result)                         return result;                 }                 return boost::optional();             }         };