gpt4 book ai didi

c++ - 如何在C++11中获取指针的类型

转载 作者:行者123 更新时间:2023-11-30 00:45:36 25 4
gpt4 key购买 nike

我有以下内容:

type* ptr;

我想从 ptr 中获取 type。我尝试使用 declval/declval/decay 但无法让它工作(这就是当你不深入了解你的东西时会发生的事情正在做)。

那么我怎样才能得到类型并创建一个相同类型的变量——比如 type some_var;

最佳答案

您可以使用 std::remove_pointer类型特征:

using ptr_type = int*;
using type = std::remove_pointer<ptr_type>::type;

static_assert(std::is_same<type, int>::value, "");

或者,您可以使用 decltypestd::declval:

using ptr_type = int*;
using type = decltype(*std::declval<ptr_type>());

static_assert(std::is_same<type, int>::value, "");

如果您直接在 decltype 中使用解引用表达式,您可能还需要使用 std::remove_reference:

int* ptr = nullptr; 
std::remove_reference<decltype(*ptr)>::type var = 7;

关于c++ - 如何在C++11中获取指针的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42899886/

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