gpt4 book ai didi

c++ - 在 C++ 中显示嵌套 typedef 的最基本类型声明

转载 作者:行者123 更新时间:2023-11-28 02:13:19 26 4
gpt4 key购买 nike

在阅读别人的代码时,是否有一种简单的方法来展开嵌套 typedef 的底层类型,除了遍历所有 header ,搜索各自的定义?

例如今天遇到了

auto* p = new A<B::C>();

其中 B::C 在某些 header 中定义为

template <typename T>
class B: public BBase {
typedef B< D<E, E> > C;
}

并且 D 和 E 在其他地方定义。 C

我能以某种方式显示 p 实际上是 A<B<D<E, E>>> 吗? ?

最佳答案

如果你不想分解 typeid 的另一种选择名字是:

template<typename> struct TC;

然后输入TC<A<B::C>> a;在某个地方,你会得到一个编译器错误,其中包含完整的推导类型。

例如:

template<typename> struct TC;

template<typename> using A = int;
using B = A<float>;

int main()
{
TC<B> a;
}

GCC 输出:

main.cpp:8:11: error: aggregate TC<int> a has incomplete type and cannot be defined

如您所见,B被替换为 A<float> ,它被替换为 int在编译器错误中。

关于c++ - 在 C++ 中显示嵌套 typedef 的最基本类型声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34920697/

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