[Bug c++/66968] Incorrect template argument shown in diagnostic

redi at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Jul 13 12:34:06 GMT 2022


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66968

--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Here's another case, using the code from PR 106281:

template<class A, class B>
class C
{
public:
  C() = default;

  template<class AA, class BB>
    C(AA, BB)
    { }

  C(C&&) = default;

private:
  struct __secret_tag  { };
  template<class AA, class BB>
    C(AA&, BB&, __secret_tag)
    { }
};

C<int, int> c({}, {});


Among the overload resolution candidates we get:

cons.C:8:5: note: candidate: ‘template<class AA, class BB> C<A, B>::C(AA, BB)
[with BB = AA; A = int; B = int]’


Where does "with BB = AA" come from?!


More information about the Gcc-bugs mailing list