Is std::declval<T>() incomplete if T is incomplete?
That question doesn't make sense; types are incomplete, expressions are not incomplete.
decltype(declval<T>()) is T&&, by definition.
Off the top of my head, I don't think a reference type like T&& can actually ever be "incomplete"; but certainly, if T is incomplete then T would be incomplete.
–Arthur