https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66834
Bug ID: 66834 Summary: [concepts] concept parameter kind mismatch causes hard error Product: gcc Version: c++-concepts Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: eric.niebler at gmail dot com Target Milestone: --- Before rev 225651 (the fix for #66758), the following worked. It no longer does. Not sure if it's legit. template <class From, class To> concept bool ExplicitlyConvertible = requires (From&& f) { static_cast<To>((From&&)f); }; template <class T, class... Args> concept bool Constructible = ExplicitlyConvertible<Args..., T> || requires (Args&&... args) { T{((Args&&)(args))...}; }; template <class T, class...Args> constexpr bool constructible() { return false; } Constructible{T, ...Args} constexpr bool constructible() { return false; } int main() {} Yields: /cygdrive/c/Users/eric/Code/cmcstl2/test/iterator.cpp: In function ‘constexpr bool Constructible()’: /cygdrive/c/Users/eric/Code/cmcstl2/test/iterator.cpp:9:5: error: pack expansion argument for non-pack parameter ‘From’ of concept ‘template <class From, class To> constexpr const bool ExplicitlyConvertible<From, To>’ ExplicitlyConvertible<Args..., T> || ^ /cygdrive/c/Users/eric/Code/cmcstl2/test/iterator.cpp:1:11: note: declared here template< class From, class To > ^