c++ - 另一个类作用域内的类模板参数类型推导
问题描述
我对一个简单的类模板有一些类型推导指南问题,即主函数范围内的实例化问题,但在另一个类中未能做到这一点。
这是一个例子:
template<class T>
struct X
{
X(T&)
{
}
};
struct User
{
X x{1}; // error: invalid use of template-name 'X' without an argument list
};
int main()
{
int i;
auto x = X(i); // OK
(void)x;
}
我有点困惑,为什么会这样,以及如何解决这个问题。有任何想法吗?
解决方案
Clangd 提供了更有意义的错误消息,这可能会让您(或我,或其他任何人)更容易在网上搜索答案,
Use of class template 'X' requires template arguments;
argument deduction not allowed in non-static struct member
其原因在这里得到了很好的解释。
推荐阅读
- ios - 为呈现的 ViewController 设置约束
- mongodb - MongoError:$cond 累加器是一元运算符
- python - 在 where 子句中为 case 语句创建别名 - SQLalchemy
- xml - Spring Batch 自定义 ItemReader 用于读取复杂的 XML 文件示例
- java - Spring Security - 从 Angular 4 客户端登录时不调用 UserDetailsService 实现类
- ssl - openssl 1.0.2j,如何强制服务器选择 ECDH* 密码
- android - 轻按表盘即可在手表上启动应用程序(如手电筒)
- macos - 在 Mac 上运行 Jenkins slave 时,远程调用 JNLP4-connect 连接失败
- kubernetes - 使用 192.168.0.0/16 或其他 iprange 作为 kubernetes + flannel 的 pod cidr
- java - cucumber + java + maven 可以生成多少种报表?