As it's impossible to partially specialise function templates, you'll have to change your implementation to use the "delegate-to-class" trick:
#include <type_traits>
// Class to delegate to
template <typename T, bool isEnum = std::is_enum<T>::value>
struct GetAs_Class {
typedef your_return_type ReturnType;
static ReturnType GetAs(your_parameters) { your_code; }
};
// Partial specialisation
template <typename T>
struct GetAs_Class<T, true> {
typedef specialisation_return_type ReturnType;
static ReturnType GetAs(your_parameters) { specialisation_code; }
};
// Your function now delegates to the class
template <typename T>
typename GetAs_Class<T>::ReturnType GetAs(your_parameters) {
return GetAs_Class<T>::GetAs(your_arguments);
}