#include <iostream>
#include <type_traits>

enum class EnumClass {};
enum Enum {};
class Class {};

template<typename E>
using is_class_enum = std::integral_constant<
  bool,
  std::is_enum<E>::value && !std::is_convertible<E, int>::value>;

int main(int argc, char* argv[]) {
  std::cout << is_class_enum<EnumClass>::value << '\n';
  std::cout << is_class_enum<Enum>::value << '\n';
  std::cout << is_class_enum<Class>::value << '\n';
  return 0;
}