gpt4 book ai didi

c++ - 当仅提供一些模板参数时,C++ 编译器如何推断模板参数

转载 作者:搜寻专家 更新时间:2023-10-31 01:02:01 24 4
gpt4 key购买 nike

我有这个类模板:

template<class Q, class V>
bool EQ(const Q& q, V v) {
return q.Eq(v);
}

和这个类:

struct TEq01 { 
char n1;
TEq01(const void* p) : n1(*(char*)p) { }
bool Eq(char n) const { return n1 == n; }
};

假设我这样使用它——只指定第一个模板参数

char *sz = "some string";
bool f = EQ<TEq01>(sz, '1');

编译器如何知道 TEq01 是Q 类 而不是V 类?我正在使用 visual studio 2013。

最佳答案

I was just wondering how the compiler knows that TEq01 is class Q instead of class V? I'm using visual studio 2013.

您提供的第一个模板参数第一个模板参数

模板参数的顺序保持不变。

自从你写道:

template<class Q, class V>
bool EQ...

调用 EQ<TEq01>意思是“QTEq01V 没有提供,所以必须推导它。”

关于c++ - 当仅提供一些模板参数时,C++ 编译器如何推断模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27953928/

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