Как использовать класс enum в качестве набора флагов?

Допустим, у меня есть набор флагов и такой класс:

/// <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 */
}

и я хочу, чтобы звонящий мог выбрать более одного варианта:

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

Можно ли поддержать это строго типизированным способом с C ++ 11enum classили я должен вернуться к нетипизированным перечислениям?

(Я знаю, что абонент могstatic_cast к основному типу иstatic_cast назад, но я не хочу, чтобы звонящий делал это)

Ответы на вопрос(5)

Ваш ответ на вопрос