On Sep 21, 2013, at 7:19 PM, Matt Calabrese <[email protected]> wrote:
> On Sat, Sep 21, 2013 at 3:12 PM, Richard Smith <[email protected]> wrote: > I don't believe this is a correct change. > > std::vector<int> v( {}, my_weird_iterator ); > > ... cannot deduce the type of `_InputIterator`. > > This is a prime candidate for my function-template-parameter-default > enable_if approach. For details, see > http://www.boost.org/doc/libs/1_54_0/libs/utility/enable_if.html#sec:enable_if_0x > . By using this approach, you'd avoid any potential corner-case deduction > issues, since the SFINAE happens as a part of forming the template parameter > kind, separate from any function parameters themselves. The documentation > linked is for boost::enable_if, but it will work perfectly fine with > std::enable_if as well. If you use this approach, be sure that the enable_if > is used when forming the template parameter kind as is shown in the > documentation and not as a part of the default argument itself. I think the reason I may not have chosen that initially is that it did not work in C++03. However that code was written around 2007 and your suggestion may actually work in -std=c++03 today (haven't checked). Howard _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
