$ clang++ --version clang version 3.5.0 (tags/RELEASE_350/final) Target: x86_64-unknown-linux-gnu Thread model: posix $ clang++ -std=c++11 boostbug.cpp In file included from boostbug.cpp:1: In file included from /usr/include/boost/algorithm/string.hpp:20: In file included from /usr/include/boost/algorithm/string/case_conv.hpp:17: /usr/include/boost/iterator/transform_iterator.hpp:85:5: error: call to implicitly-deleted default constructor of '(lambda at boostbug.cpp:11:34)' transform_iterator() { } ^ /usr/include/boost/concept_check.hpp:139:10: note: in instantiation of member function 'boost::iterators::transform_iterator<(lambda at boostbug.cpp:11:34), __gnu_cxx::__normal_iterator > >, boost::iterators::use_default, boost::iterators::use_default>::transform_iterator' requested here TT a; // require default constructor ^ /usr/include/boost/concept/usage.hpp:16:43: note: in instantiation of member function 'boost::DefaultConstructible > >, boost::iterators::use_default, boost::iterators::use_default> >::~DefaultConstructible' requested here ~usage_requirements() { ((Model*)0)->~Model(); } ^ /usr/include/boost/concept/detail/general.hpp:38:42: note: in instantiation of member function 'boost::concepts::usage_requirements > >, boost::iterators::use_default, boost::iterators::use_default> > >::~usage_requirements' requested here static void failed() { ((Model*)0)->~Model(); } ^ /usr/include/boost/concept_check.hpp:138:5: note: in instantiation of member function 'boost::concepts::requirement > >, boost::iterators::use_default, boost::iterators::use_default> > >::************>::failed' requested here BOOST_CONCEPT_USAGE(DefaultConstructible) { ^ /usr/include/boost/concept/usage.hpp:29:7: note: expanded from macro 'BOOST_CONCEPT_USAGE' BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements)); \ ^ /usr/include/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /usr/include/boost/concept/detail/general.hpp:78:51: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &::boost::concepts::requirement_::failed> \ ^ boostbug.cpp:11:69: note: in instantiation of function template specialization 'boost::range_detail::operator| > >, (lambda at boostbug.cpp:11:80)>' requested here boost::join( x | transformed([](X const &){ return string(); }) | filtered([](string const &){return true;}), ""); ^ boostbug.cpp:11:34: note: lambda expression begins here boost::join( x | transformed([](X const &){ return string(); }) | filtered([](string const &){return true;}), ""); ^ 1 error generated.