StringSet copy constructor

I’m trying to make a string set that has a flag to become the universal set, and figured StringSet might be a good starting point

struct Selection : StringSet<> {
bool all;

Selection(const Selection &selection)
: StringSet<>(selection), all(selection.all) {}

Selection(bool all) : all(all) {}

size_t count(const string &s) const {
if (all)
return true;
return StringSet<>::count(s);
}
};

But I get an error when trying to compile

error C2280: ‘llvm::StringSetllvm::MallocAllocator::StringSet(const llvm::StringSetllvm::MallocAllocator &)’: attempting to reference a deleted function
\llvm\include\llvm/ADT/StringSet.h(31): note: compiler has generated ‘llvm::StringSetllvm::MallocAllocator::StringSet’ here

The indicated line is on my constructor declaration - is this not the right way to copy a StringSet?

StringSets are just StringMaps in disguise
StringMaps aren’t copyable just because no one has had a need for that yet (see the comment “// FIXME: Implement copy operations if/when they’re needed.”)

http://llvm.org/docs/doxygen/html/StringMap_8h_source.html

If there’s a need, please implement/provide a patch (along with unit tests)

Ah! Fair enough. The use case isn’t high frequency so I can probably just use std::set for now.