On Wed, 16 Nov 2022 at 13:47, Jakub Jelinek wrote: > On Wed, Nov 16, 2022 at 01:45:19PM +0000, Jonathan Wakely wrote: > > > On Mon, 14 Nov 2022 at 13:57, Jakub Jelinek wrote: > > > > > >> Hi! > > >> > > >> As filed by Jonathan in the PR, I've screwed up the requires syntax > > >> in the extended floating point specialization: > > >> - requires(__complex_type<_Tp>::type) > > >> + requires requires { typename __complex_type<_Tp>::type; } > > >> and doing this change resulted in lots of errors because > > >> __complex_whatever > > >> overfloads from extended floating point types were declared after the > > >> templates which used them. > > >> > > >> The following patch fixes that. > > >> > > >> Bootstrapped/regtested on x86_64-linux and i686-linux, additionally > > >> I've tested that with _GLIBCXX_HAVE_FLOAT128_MATH not being defined > > >> while __STDCPP_FLOAT128_T__ defined one can still use > > >> std::complex for basic arithmetic etc., just one > can't > > >> expect std::sin etc. to work in that case (because we don't have any > > >> implementation). > > >> > > >> Ok for trunk? > > >> > > > > > > OK, thanks for the quick fix. > > > > > > > Oh, also no released version of Clang can handle the C++20 rules about > > 'typename' yet, so we get this error: > > > > complex:1843:15: error: no template named 'type' in '__complex_ty > > pe<_Tp>'; did you mean 'ctype'? > > typedef std::__complex_type<_Tp>::type _ComplexT; > > ^~~~~~~~~~~~~~~~~~~~~~~~~~ > > It needs a 'typename' after 'typedef'. > > > > I can add that if you want though. > > Can you? Sorry, I have already committed the patch before noticing your > mail. > Yes, no problem, I'll do it.