decltype(invoke(std::declval<F>(), std::declval<Args>()...));
template <typename F, typename... Args>
-using invoke_nothrow_ = std::integral_constant<
- bool,
- noexcept(invoke(std::declval<F>(), std::declval<Args>()...))>;
+struct invoke_nothrow_
+ : std::integral_constant<
+ bool,
+ noexcept(invoke(std::declval<F>(), std::declval<Args>()...))> {};
// from: http://en.cppreference.com/w/cpp/types/result_of, CC-BY-SA
using result_ = \
decltype(::std::declval<F>().membername(::std::declval<Args>()...)); \
template <typename F, typename... Args> \
- using nothrow_ = ::std::integral_constant< \
- bool, \
- noexcept(::std::declval<F>().membername(::std::declval<Args>()...))>; \
+ struct nothrow_ : std::integral_constant< \
+ bool, \
+ noexcept(::std::declval<F>().membername( \
+ ::std::declval<Args>()...))> {}; \
\
template <typename, typename F, typename... Args> \
struct invoke_result_ {}; \