This seems to be related to CWG issue #1980 (credits to T.C. for correcting me).
As a workaround you can define void_t
as:
template<typename... Ts> struct make_void { typedef void type;};
template<typename... Ts> using void_t = typename make_void<Ts...>::type;
More Related Contents:
- Multiple SFINAE class template specialisations using void_t
- How does guaranteed copy elision work?
- What are the evaluation order guarantees introduced by C++17?
- What are the new features in C++17?
- What is the purpose of std::launder?
- How to assert that a constexpr if else clause never happen?
- What is “Expression SFINAE”?
- Understanding std::hardware_destructive_interference_size and std::hardware_constructive_interference_size
- What made i = i++ + 1; legal in C++17?
- Why should I avoid std::enable_if in function signatures
- Does returning a local variable return a copy and destroy the original(nrvo)?
- constexpr static member before/after C++17
- Try to understand compiler error message: default member initializer required before the end of its enclosing class
- structured bindings: when something looks like a reference and behaves similarly to a reference, but it’s not a reference
- What is decltype with two arguments?
- Deducing first template argument with other template parameters defaulted
- Why is there no support for concatenating std::string and std::string_view?
- How to use sfinae for selecting constructors?
- Self-initialization of a static constexpr variable, is it well-formed?
- Static member access in constant expressions
- Pointer interconvertibility vs having the same address
- Why does aggregate initialization not work anymore since C++20 if a constructor is explicitly defaulted or deleted?
- Why doesn’t an if constexpr make this core constant expression error disappear?
- Restrict variadic template arguments
- Deduction guides and variadic class templates with variadic template constructors – mismatched argument pack lengths
- using SFINAE for template class specialisation
- Convert std::variant to another std::variant with super-set of types
- How to test whether class B is derived from template family of classes
- Undefined reference error with new filesystem library and clang++7
- Can SFINAE detect private access violations?