Ящитаю, некоторые библиотеки там в упор не сдались. Это касается, например, foreach, lambda, tuple (в двух ипостасях!).
Почему? Наверное, потому что это все же костыли, а не решения...
По отдельности они вроде бы и ничего так. Но практика - вещь суровая, и там всегда требуется некая комплексность. В моей, оговорюсь, практике эти три примитива (foreach, lambda, tuple), как правило, используются разом. Достаточно типична ситуация, когда foreach надо применить к списку tuples возвращаемых каким-то фильтром с использованием анонимных функций. Боюсь даже представить, какое спагетти получится из простого
// Вытащим наружу все проблемы :)
foreach(var x in filter(x => x.a == y && MyCompare(x.b, y), tuple_source)) {
do_something_with(x);
}
Хотелось бы услышать о светлом и прекрасном опыте использования данных либ и буста вообще (интересен, в первую очередь, опыт юзания Boost.Function, Fusion, Spirit, BCCL. Всякие там Mpi, asio, iostream, smart_ptr в данном контексте как бы не слишком интересны)