gpt4 book ai didi

c++ - 在编译时检查类型是否为指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:31:16 28 4
gpt4 key购买 nike

我正试图找到一种方法来在编译时判断一个类型是否是一个指针。就像这样:

#include <type_traits>
#if std::is_pointer<char*>::value
#pragma message("blah")
#endif

但是,这会给出两次“警告 C4067:预处理器指令后的意外标记 - 需要换行符”(我认为::是混淆它的原因)并且它不会打印 blah。当我悬停在::value 上时,编译器会告诉我它是否为真,这意味着它在编译时已知,所以这应该可以工作。

这样做的原因是我希望能够做这样的事情:

T pHead;
#if std::is_pointer<T>::value
pHead= NULL;
#endif

如果它是一个指针,我将变量设为 NULL。它必须是编译时检查,因为如果 T 是一个结构,我不能将 NULL 分配给它的变量。 IE。当 T 是结构时,以下代码将无法编译:

T pHead;
if (std::is_pointer<T>::value)
pHead= NULL;

谢谢
马特

最佳答案

您可以将变量初始化为其默认值,对于指针类型为 NULL。

T pHead = T();

也适用于大多数结构。

关于c++ - 在编译时检查类型是否为指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8777043/

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