Не, boost::any это же что-то вроде QVariant, насколько я помню? А valarray позволяет такие штуки писать:
valarrar<int>{1, 2, 3} + valarray<int>{4, 5, 6} == valarray<int>{5, 7, 9}
Но не позволяет так:
valarrar<int>{1, 2, 3} + valarray<double>{4.0, 5.0, 6.0} == valarray<double>{5.0, 7.0, 9.0}
А в том классе из boost так можно было.