https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994
--- Comment #4 from Marek Polacek <mpolacek at gcc dot gnu.org> --- Yes, a way to fix this would be to do the build_functional_cast in check_initializer: 6892 else if (DECL_DECLARED_CONSTEXPR_P (decl) 6893 || (flags & LOOKUP_CONSTINIT)) 6894 { 6895 /* Declared constexpr or constinit, but no suitable initializer; 6896 massage init appropriately so we can pass it into 6897 store_init_value for the error. */ 6898 if (CLASS_TYPE_P (type) 6899 && (!init || TREE_CODE (init) == TREE_LIST)) 6900 { 6901 init = build_functional_cast (input_location, type, 6902 init, tf_none);