代码之家  ›  专栏  ›  技术社区  ›  Edward Strange

模板自交

  •  3
  • Edward Strange  · 技术社区  · 14 年前
    template < typename T >
    struct test
    {
      template < typename U >
      friend struct test<U>;
    };
    
    int main() {}
    

    这是完全有效的代码,不是吗?我这么问是因为MSVC++2010无法编译它。不过,模板已经不是第一次让MS编译器感到困惑了。据我所知,从书籍,网站等,它应该工作。

    1 回复  |  直到 14 年前
        1
  •  5
  •   Edward Strange    14 年前

    正确的语法是:

    template < typename T >
    struct test
    {
      template < typename U >
      friend struct test; // no <U>
    };
    
    int main() {}