+
+/* What kind of scopes name lookup looks in. An enum class so we
+ don't accidentally mix integers. */
+enum class LOOK_where
+{
+ BLOCK = 1 << 0, /* Consider block scopes. */
+ CLASS = 1 << 1, /* Consider class scopes. */
+ NAMESPACE = 1 << 2, /* Consider namespace scopes. */
+
+ ALL = BLOCK | CLASS | NAMESPACE,
+ BLOCK_NAMESPACE = BLOCK | NAMESPACE,
+ CLASS_NAMESPACE = CLASS | NAMESPACE,
+};
+constexpr LOOK_where operator| (LOOK_where a, LOOK_where b)
+{
+ return LOOK_where (unsigned (a) | unsigned (b));
+}
+constexpr bool operator& (LOOK_where a, LOOK_where b)
+{
+ return 0 != (unsigned (a) & unsigned (b));
+}
+