gpt4 book ai didi

c++ - 模板类中的模板函数 is_same

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:08:03 26 4
gpt4 key购买 nike

为什么这段代码会产生错误的输出?

//this-type.cpp  

#include <iostream>
#include <type_traits>

using namespace std;

template<typename testype>
class A
{
public:
A()
{
cout << boolalpha;
cout << is_same<decltype(*this), A<int>>::value << endl;
}
};

class B : public A<int>
{
};

int main()
{
B b;
}

输出:

$ g++ -std=c++11 this-type.cpp
$ ./a.out
false

A 到 B 中的“*this”的类型是 A ,不是吗?

最佳答案

*thisA 类型的左值,因此 decltype(*this) 将给出引用类型 A &。回想一下左值上的 decltype 给出了引用类型:

    cout << is_same<decltype(*this), A<int>>::value << endl;
cout << is_same<decltype(*this), A<int> &>::value << endl;

输出:

false
true

关于c++ - 模板类中的模板函数 is_same,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13843222/

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