Do you mean something that would work along the lines of...
std::vectorboost::any my_vec;
// fill my_vec with various data types
//iterate through doubles
for (auto itr = itr_begin<double>(my_vec); itr != itr_end<double>(my_vec);
++itr)
{
// ...
}
//iterate through strings
for (auto itr = itr_beginstd::string(my_vec); itr !=
itr_endstd::string(my_vec); ++itr)
{
// ...
}
where itr_begin and itr_end generate iterators for the templated type over
any container of type erased objects. I didn't quite get what you were
suggesting at first, but yeah I think I agree that would be more useful.
On Tue, May 5, 2015 at 3:37 PM, Boris Rasin
On 5/5/2015 9:04 PM, James Armstrong wrote:
You're correct in that a vectorboost::any can achieve the same thing, and that would probably be the better way to implement this internally. I guess the proposal would be to provide the container interface to give some data modification functions and iterators which iterate over only a given type and such. That way there would be a standardized container with methods to deal with the data in a type specific way.
But why do you need special container type if all you want are algorithms and iterator adapters? Like I said before, this could be useful, but wouldn't it be better to write this as generic algorithms capable of working with any container of boost::any, not just vector? Better yet, any container of type erased or discriminated union objects (boost::any, boost::type_erasure::any, boost::variant, eggs::variant, etc.)?
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
-- James Armstrong