So as an exercise, I'm trying to use a lambda expression that applies the first argument twice on it's second argument. typedef mpl::apply<_1, mpl::apply<_1, _2>::type>::type twice_type; Then I instance this lambda function on boost::add_pointer and int typedef mpl::apply<twice_type, boost::add_pointer<_1>, int>::type result_type; But using boost::is_same, I've found that result_type==int, not int** as expected. Can someone see why? ------------------------------------------- Manson: My philosophy is: Don't think. I don't believe in the mind that you think with and scheme with. I don't believe in words. Reporter: If you don't believe in words, why do you use so many of them? Manson: Words are symbols. All I'm doing is jumbling the symbols in your brain. Everything is symbolic. Symbols are just connections in your brain. Even your body is a symbol. __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com