type_declaration: @struct type = {
require: (this) = { }
}
require_fn: type == std::function<void(bool, std::string_view)>;
array2: (inout t: type_declaration) = {
require: std::optional = t.require();
_ = require;
}
main: () = { }
main.cpp2:6:38: error: variable 'require' declared with deduced type 'std::optional' cannot appear in its own initializer
6 | std::optional require {CPP2_UFCS_0(require, t)};
| ^
main.cpp2:6:17: error: no viable constructor or deduction guide for deduction of template arguments of 'optional'
6 | std::optional require {CPP2_UFCS_0(require, t)};
| ^
See #550 (comment):