----- Original Message ----- From: "Jaakko Jarvi" <[EMAIL PROTECTED]> To: "Boost mailing list" <[EMAIL PROTECTED]> Sent: Friday, November 15, 2002 4:50 PM Subject: Re: [boost] Named Template Parameters implementation
> > OK, I read the docs, followed the example and *tried* to use it in the > > library. > > Unfortunately, I received tons of mysterious compiler errors with BCC55; > > apparently as a result of the usage of template template parameters in > > ntp::as_named<>. > > as_named is needed if you allow an argument slot to accept both > unnamed and named template parameters. > You should be able to go around the need for template template > parameters by 'expanding' as_name by hand: > > instead of > > typename boost::ntp::as_named<Model, Model_is>::type > > write: > > typename boost::mpl::if_c<detail::is_named_parameter<Model>::value, > T, Model_is<T> >::type > > Are there other things that cause trouble with your compiler? > Yes, unfortunately... I have expaned is_named all the way as follow: typedef boost::ntp::detail::is_named_parameter<Model> Model_IsNamed ; typedef boost::ntp::detail::is_named_parameter<Color> Color_IsNamed ; typedef Model_is<Model> NamedModel ; typedef Color_is<Color> NamedColor ; typedef typename boost::mpl::if_<Model_IsNamed,Model, NamedMode>::type ModelP ; typedef typename boost::mpl::if_<Color_IsNamed,Color,NamedColor>::type ColorP ; typedef boost::tuple<ModelP,ColorP,Seats,Transmission> argument_tuple; But then I get: typedef typename features::Model Model ; ---> Member is ambiguous: Model_is<limited>::Model and 'default_car_fetures::Model' If I change typedef boost::tuple<ModelP,ColorP,Seats,Transmission> argument_tuple; to this: typedef boost::tuple< Model_is<Model>, Color_is<Color>,Seats,Transmission> argument_tuple; So to fix the 'make it Named' part I get the same error. Perhaps BCC is getting confused when the tuple elements are *local* instances of the Named parameters. Because after all, if I remove the 'Make sure is Named' part and let the test use only truly named parameters it works. That is, if the local template parameter Model is already 'Model_is<XX>' it works. Any ideas? BTW: I get the same errors if I skip the depedent-feature part. That is, if I use this directly: typedef boost::ntp::named_parameter_extractor<argument_tuple> features; (PS: I'm leaving now, so I won't get back to this until Monday...) > /Jaakko > Fernando Cacciola _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost