You can define your own trait which uses SFINAE to determine this:
namespace detail
{
template<typename T>
auto has_eval_impl(void*)
-> decltype(std::declval<T>().eval(), std::true_type());
template<typename T>
auto has_eval_impl(...) -> std::false_type;
}
template<typename T>
struct has_eval : decltype(detail::has_eval_impl<T>(nullptr)) { };