g似乎接受auto
和decltype(auto)
的任何组合作为初始和后续返回类型:
int a;
auto f() { return (a); } // int
auto g() -> auto { return (a); } // int
auto h() -> decltype(auto) { return (a); } // int&
decltype(auto) i() { return (a); } // int&
decltype(auto) j() -> auto { return (a); } // int
decltype(auto) k() -> decltype(auto) { return (a); } // int&
然而,clang拒绝了j
和k
,他说:错误:带有尾部返回类型的函数必须指定返回类型“auto”,而不是“decltype(auto)”(演示)。
哪个编译器是正确的?在每种情况下应该使用哪条规则(auto
或decltype(auto)
)?在尾部返回类型中使用占位符类型有意义吗?
在@Xeo建设性评论后编辑:
这个问题似乎是由于标准草案的两个地方之间的矛盾。
根据标准草案§7.1.6.4自动说明符[dcl.spec.auto]:
1
auto和decltype(auto)
类型说明符指定一个占位符类型,该占位符类型将在以后被替换,可以通过从初始值设定项中进行推断,也可以通过带有尾部返回类型的显式规范。自动类型说明符还用于表示lambda是泛型lambda。
2
占位符类型可以与函数声明符一起出现在decl说明符seq、类型说明符seq、转换函数id或尾随返回类型中,在此类声明符有效的任何上下文中。如果函数声明符包含一个尾部返回类型(8.3.5),则指定函数声明的返回类型。如果声明的函数返回类型包含占位符类型,则函数的返回类型将从函数体中的返回语句(如果有)中推导出来。
对上述内容的唯一解释是,Clang有一个bug。
然而,由于核心问题1852规定上述与§8.3.5/2函数[dcl.fct]相矛盾,应该进行更改。问题的状态已准备就绪,表明更改已被接受。
因此,GCC有一个应该报告的bug。
引入尾随返回类型时,需要使用auto
。
§8.3.5[dcl.fct] /2
在声明中,td
其中D
的形式为
D1(
参数声明子句
)cv限定符seq
optref限定符
opt异常规范
opt属性说明符seqopt尾部返回类型
并且声明T D1
中包含的声明符-id的类型为“派生声明符-type-listT
”,
T
应为单一类型的自动规范。[...]
关于与[dcl.spec.auto]/1的明显矛盾,另见核心问题1852。
类型 Glide允许用户指定三种不同类型的占位符,分别在三种不同场景使用: placeholder error fallback 占位符(Placeholder) 占位符是当请求正在执行时被展示的 Drawable 。当请求成功完成时,占位符会被请求到的资源替换。如果被请求的资源是从内存中加载出来的,那么占位符可能根本不会被显示。如果请求失败并且没有设置 error Drawable ,则占位符将
#{}速度快,能防止sql注入,是占位符方式,先预编译,然后填充参数,字符串格式,用户名=(___),参数只是下划线上的内容 ${}是直接拼接到语句上,这种方式需要自己拼括号和参数,但是也可以拼接想执行的任何语句,也就是传说中的sql注入 详情如下 在MyBatis中使用参数进行SQL拼装经常会使用到#{var}和${var}两种参数的设置方式。下面是两种方式的不用之处: #{var} 使用预编译
问题内容: 看来这是一个众所周知的问题,但是我在Google上找到的所有解决方案都不适用于我新下载的IE9。 启用and 标签上的属性的最喜欢的方式是哪种? 可选:我为此花了很多时间,而且还没有去寻找房产。您对此还有意见吗?显然,我可以检查PHP中的值,但是对于帮助用户使用此属性非常方便。 问题答案: HTML5占位符jQuery插件 -通过的Mathias Bynens上协作者HTML5样板和j
我有一个使用占位符的Thymeleaf模板,其中占位符属性指定一个简短提示,描述输入字段的预期值或格式。 占位符在输入文本为空时工作。但是,如果需要编辑包含以前输入的数据的字段,则以前输入的文本将消失,并在输入收到焦点时替换为占位符文本。 有没有办法避免这种情况? 胸腺叶模板 以及生成的HTML
问题内容: 看来这是一个众所周知的问题,但是我在Google上找到的所有解决方案都不适用于我新下载的IE9。 启用and 标签上的属性的最喜欢的方式是哪种? 可选:我为此花了很多时间,而且还没有去寻找房产。您对此还有意见吗?显然,我可以检查PHP中的值,但是对于帮助用户使用此属性非常方便。 问题答案: HTML5占位符jQuery插件 -通过的Mathias Bynens和jsPerf https
我有一个Thymeleaf模板,我想把一个对象的属性作为占位符,但是我看到的是。