Problem with functions accepting inner classes of template classes

后端 未结 3 2049
遥遥无期
遥遥无期 2020-12-11 19:51

I have a problem with inner classes in class templates. I have a template class (say: Matrix), and a subclass (say: Matrix::Row).

3条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-11 20:46

    How should the compiler be able to deduce this? Imagine the following setup:

    struct A { typedef int T; };
    struct B { typedef int T; };
    
    template  void foo(typename S::T);
    

    Now when you say int x; foo(x);, there's no way to match this unambiguously.

    The point is that you are not deducing a template parameter from a given class template, but rather just an arbitrary, free-standing type. The fact that that type was defined inside another class is not relevant for that.

提交回复
热议问题