c++ - 未评估上下文中的函数模板实例化
问题描述
以下程序是否格式良好?
template<typename T>
void f() { T{}.m; }
using u = decltype(f<int>);
这是要试验的代码。
实例化f<int>
是错误的,但f<int>
这里没有在评估的上下文中使用,所以我认为应该没问题。clang 同意,但是 gcc 抱怨:
In instantiation of 'void f() [with T = int]':
error: request for member 'm' in '0', which is of non-class type 'int'
我不明白为什么 gcc 在这里实例化任何东西。
那么这段代码格式不正确,还是 gcc 错误?
解决方案
推荐阅读
- c - 为什么没有创建文件?
- r - 如何将函数clusterApply应用于并行计算?
- javascript - 如何从 html 页面中获取与 JavaScript 具有相同 id 的所有文本?
- javascript - 使用 Javascript 的 JANUS WebRTC 的简单示例
- html - 根据条件禁用按钮
- wso2 - WSO2 APIM - 使用客户端凭据方法的子声明问题
- java - 如何为不同包中的两个生成的类编写通用方法,但Java中的所有方法都相同
- spring - HTTP 状态 404 - 未找到 Spring Boot
- python - 编码重复单词在代码中不起作用?
- javascript - StartTime 在 FUllcalendar 的周、月、日视图中没有变化