// Copyright Carsten Graeser 2012 #include <dune/common/exceptions.hh> #include <dune/common/typetraits.hh> template <class Enum> struct StringToEnum : public Dune::NotImplemented {}; template <class Enum> typename Dune::enable_if< !Dune::IsBaseOf<Dune::NotImplemented, StringToEnum<Enum>>::value, std::istream &>::type operator>>(std::istream &lhs, Enum &e) { std::string s; lhs >> s; try { e = StringToEnum<Enum>::convert(s); } catch (typename Dune::Exception) { lhs.setstate(std::ios_base::failbit); } return lhs; }