mercredi 22 juin 2016

class member overload (or specialization) based on different enum values

Is it possible to overload or specialize class member functions based on given enum values?

enum class Type {
  TypeA,
  TypeB,
  TypeC
};

class Foo {[

  template <Type t, typename std::enable_if_t<t==Type::TypeA>>
  int get() {
    return 1;
  }

  template <Type t, typename std::enable_if_t<t==Type::TypeB>>
  double get() {
    return 1.0;
  }

  template <Type t, typename std::enable_if_t<t==Type::TypeC>>
  char get() {
    return 'a';
  }
};

The compile complain about overloading on above code snippet.

Aucun commentaire:

Enregistrer un commentaire