std::function
‘s definition hasn’t changed in the current working draft:
template<class T>
class function; // not defined
template<class R, class... ArgTypes>
class function<R(ArgTypes...)> {
/* ... */
};
Since void() noexcept
doesn’t match the partial specialization, std::function<void() noexcept>
is an incomplete type. Both Clang and GCC trunk diagnose this accordingly.