https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81239
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed|2017-06-28 00:00:00 |2018-12-17 --- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- I fixed the std::__cxx11::string case on trunk, the output is now: 81239.cc: In function 'int main()': 81239.cc:15:17: error: too few arguments to function 'void test_params(const string&, std::string&)' 15 | test_params(); | ^ 81239.cc:7:6: note: declared here 7 | void test_params(const string & mystr1, string & out_str) | ^~~~~~~~~~~ However the problem still exists in general: namespace a { inline namespace b { template<typename C> class foo { }; using cfoo = foo<char>; } } using namespace a; void test_params(const cfoo&, cfoo&) { } int main (void) { test_params(); } The error: line shows the namespace for one parameter and not the other: 81239.cc: In function 'int main()': 81239.cc:16:15: error: too few arguments to function 'void test_params(const cfoo&, a::b::cfoo&)' 16 | test_params(); | ^ 81239.cc:10:6: note: declared here 10 | void test_params(const cfoo&, cfoo&) | ^~~~~~~~~~~