C++のことなのですが

template<typename ...TArgs >
using func = std::function<void(TArgs...)>;

たとえば↑のようなテンプレートパラメータパックを含むエイリアス宣言をしたとき
func<void> f;
のようにvoid型をテンプレート引数にとるとinvalidate argument的なエラーを吐かれるのですが何が理由なのでしょうか…
また、回避方法はあるのでしょうか