当前位置:  开发笔记 > 编程语言 > 正文

在概念定义中,是否允许在需求表达式之外的替换失败?

如何解决《在概念定义中,是否允许在需求表达式之外的替换失败?》经验,为你挑选了0个好方法。

考虑以下代码:

#include                                            
#include 

template  concept bool C1 = std::is_same::value; 

template  concept bool C2 =  
    C1() + std::declval())>; 

struct A {};                   

int main() { 
  std::cout << C2; 
  std::cout << C2;                                                 
  return 0;                                                           
}

GCC编译得很好并打印10.

§14.10.1.2谓词约束[temp.constr.pred]的N4553说

谓词约束是一个约束,用于计算常量表达式E(5.19).

然后

替换后,E应具有bool类型.

由于C1() + std::declval())>替换失败,而不是类型bool,这是否意味着该程序应该是格式错误的?

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有