gpt4 book ai didi

C++ 模板类型检查 std::is_same 不工作?

转载 作者:搜寻专家 更新时间:2023-10-31 00:52:07 26 4
gpt4 key购买 nike

<分区>

给出以下代码:

#include <string>

template<typename T>
static void parse(T & result)
{
if (std::is_same<T, struct Foo>::value)
{
result.fooValue = 123;
}
else if (std::is_same<T, struct Bar>::value)
{
result.barValue = 456;
}
}

struct Foo { int fooValue; };
struct Bar { int barValue; };

int main()
{
Foo foo;
parse(foo);

Bar bar;
parse(bar);

return 0;
}

这不会编译并显示错误消息:

error C2039: 'barValue': is not a member of 'Foo'
error C2039: 'fooValue': is not a member of 'Bar'

我做错了什么?有人可以向我解释为什么在我将 foo 传递到 parse 并传递 bar 之后它认为它是 foo因此抛出编译器错误。这背后的常识是什么?或者换句话说,检查模板类型的正确原因是什么。

请注意,我已经了解模板特化和实例化。

提前致谢!

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