inline std::string to_string(const error_info<Tag, V>& info) { return jubatus::util::lang::lexical_cast<std::string, V>(info.value()); }
inline typename enable_if<has_to_string<T>,std::string>::type to_string( error_info<Tag,T> const & x ) { return to_string(x.value()); }
static bool is_valid(const error_info& info) noexcept { return is_al_error(info.al_error_code()); }
static void cancel(error_info& info) noexcept { info.al_error_code(AL_NO_ERROR); }
inline std::string to_string( error_info<Tag,T> const & x ) { return '[' + error_info_name(x) + "] = " + to_string_stub(x.value()) + '\n'; }