Как использовать класс 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
назад, но я не хочу, чтобы звонящий делал это)