gpt4 book ai didi

C++17 类模板参数推导在初始化列表中不起作用,为什么?

转载 作者:行者123 更新时间:2023-12-03 07:21:01 25 4
gpt4 key购买 nike

我正在玩类模板参数推导。在主函数中创建 A 类对象没有问题,但是当我尝试在另一个类中创建 A 类对象时,推导失败。为什么?

template<class T>
class A {
public:
A(T value) : myValue(value) {}

T myValue;
};

class B {
public:
B(int value) : a(value) {}

A a; // this IS NOT working, why??
};

int main() {
A a(100); // this IS working
B b(100);
}

最佳答案

很少有地方会出现占位符(参见 dcl.type.class.deduct),这不是其中之一。标准不允许。
允许占位符的地方有一个共同点:总是有一个初始化器。在一个类中,多个构造函数会导致多个可能不同类型的“初始化器”。如果就需要在此位置使用占位符达成共识,则必须描述如何解决可能存在的不同类型,这需要工作。

关于C++17 类模板参数推导在初始化列表中不起作用,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65116662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com