Jak używać klasy enum jako zestawu flag?

Powiedzmy, że mam zestaw flag i taką klasę:

/// <summary>Options controlling a search for files.</summary>
enum class FindFilesOptions : unsigned char
{
    LocalSearch = 0,
    RecursiveSearch = 1,
    IncludeDotDirectories = 2
};

class FindFiles : boost::noncopyable
{
    /* omitted */
public:
    FindFiles(std::wstring const& pattern, FindFilesOptions options);
    /* omitted */
}

i chcę, aby dzwoniący mógł wybrać więcej niż jedną opcję:

FindFiles handle(Append(basicRootPath, L"*"),
    FindFilesOptions::RecursiveSearch | FindFilesOptions::IncludeDotDirectories);

Czy jest możliwe, aby w C ++ 11 było to obsługiwane w ściśle określony sposóbenum classlub czy muszę powrócić do nietypowych wyliczeń?

(Wiem, że dzwoniący mógłstatic_cast do typu bazowego istatic_cast z powrotem, ale nie chcę, żeby dzwoniący musiał to zrobić)

questionAnswers(5)

yourAnswerToTheQuestion