Скажем, у меня есть набор флагов и класс вроде этого:
/// <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);
Можно ли это поддерживать строго типизированным способом с С++ 11 enum class
, или мне нужно вернуться к нетипизированным перечислениям?
(Я знаю, что вызывающий может static_cast
для базового типа и static_cast
назад, но я не хочу, чтобы вызывающий абонент должен был это делать)