代码之家  ›  专栏  ›  技术社区  ›  Jans

将模板参数与默认参数匹配

  •  0
  • Jans  · 技术社区  · 6 年前

    这个问题与 this one

    template<class T, class U = T> class B { };
    template <class ... Types> class C {  };
    template<template<class> class P> class X { };
    
    X<B>{ }; // OK
    X<C>{ }; // OK
    

    中的标准 [temp.arg.template]/3 已将这两个案例标记为正常,但 defect CWG 150 上面说 CWG clang 也不是 gcc 接受代码。

    叮当声 合同通用条款

    1 回复  |  直到 6 年前
        1
  •  2
  •   Barry    6 年前

    gcc从7.1开始接受这一点。叮当声 intentionally

    尽管它是缺陷报告的解决方案,但在所有语言版本中,此功能都默认禁用,并且可以使用标志显式启用 -frelaxed-template-template-args

    有关上述中断代码的示例,请参阅 this question .

    Compilation demo


    此外,有关核心问题的最新情况是:

    [在2016年11月的会议上作为文件转交给DR P0522R0 .]