https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60976
--- Comment #25 from Jonathan Wakely <redi at gcc dot gnu.org> --- There was a G++ bug (now fixed) that made void_t not work, try this alternative version: template< class... > struct __voider { using type = void; }; template< class... _T0toN > using __void_t = typename __voider<_T0toN...>::type;