https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90638
--- Comment #4 from Igor Smirnov <Igor.Smirnov at cern dot ch> --- Richard, thanks for checks. Yes this is correct result. I am wondering, do they correct this problem for complex<> and for inbuilt types only? Is there a possibility for you to run the following program on these new versions and to show the results: -------------------------------------------------------------------- #include <iostream> template< class T> double fun(const T& x, int i) { std::cout<<"fun(const T&, int) is working.\n"; return x * i; } template< class T> double fun(const T& x, const T& d) { std::cout<<"fun(const T&, const T&) is working.\n"; return x * d; } int main(void) { std::cout<<"fun(1.1, 1)="<<'\n'; std::cout<<fun(1.1, 1)<<'\n'; std::cout<<"fun(1.1, 1/2.0)="<<'\n'; std::cout<<fun(1.1, 1/2.0)<<'\n'; std::cout<<"fun(1.1, (long double)1/2.0)="<<'\n'; std::cout<<fun(1.1, (long double)1/2.0)<<'\n'; } -----------------------------------------------------------------