AMDG On 03/22/2014 05:13 PM, Samuel Christie wrote:
Hmm. Maybe it would be best if I make a custom wrapper class anyway, then. All I really need is the ability to 1) record 'seen' objects in the history, and 2) be able to tell whether one of the same objects is in the history or not. Up until this point, I've been using unordered_sets, but I was hoping to support more sophisticated memory models that would only remember recent history, for instance.
Of those choices, I think (b) makes the most sense for my purposes, though a or c would also be acceptable. I can't really see how I would achieve that with just type erasure though. This could easily be a case of an over-used hammer.
Do you actually need to erase the value_type?
If you can use has_count
If you don't mind my asking, which of them would you recommend, which do you think is achievable with type-erasure, and what other alternatives do you think I should be considering?
If it were just count, I would go for (b). However,
that isn't an option for insert, since it's impossible
to insert something that isn't an int into a container
that stores ints. Whether consistency between the
functions is more important than the extra convenience,
only you can decide. Now that I think about it, all these
options can all be implemented in basically the same way
(you will need typeid_<_value> for this to work):
template<class T>
std::size_t generic_count(const any_set& c, const T& t)
{
typedef any