top | item 39161765

(no title)

neeeeees | 2 years ago

Interesting - is there a type safe way to do this? vector<variant<>>? and/or a custom “vector allocator” to hide the details?

discuss

order

markisus|2 years ago

In my example, the T is one specific type. So you could have std::vector<Cat>. If you also have Dogs, you just make another vector std::vector<Dog>. It works fine with the standard allocator. You don't have to do anything special.

neeeeees|2 years ago

Ah okay that makes sense to me

noduerme|2 years ago

If you wanted a factory that allocated vectors of a variety of known types, you'd probably declare template <typename T> before the generator function, so that on compilation a separate version of that function would be emitted for each type you passed to it.

(Not really a c++ expert, but that's my understanding; someone more knowledgeable can correct me).

CyberDildonics|2 years ago

Why would you need a variant? If you have one of something, put it on the stack. If you have a lot of the a type, put them in a vector.

emi2k01|2 years ago

Isn't that an arena allocator at that point?