c++ - 像std::is_pointer和std::is_integral,std::is_cstring_pointer如何实现?

标签 c++ c++11 typetraits

std::is_pointerstd::is_integral,如何实现std::is_cstring_pointer

我想检查指针是否是一个c类型的字符串指针,可以吗?

如何实现这个目标?

最佳答案

组合现有类型特征相当简单:

template <class T>
struct is_char_ptr
    : std::integral_constant<bool,
        std::is_pointer_v<T>
        && std::is_same_v<char,
          typename std::remove_cv_t<std::remove_pointer_t<T>>>>
{};

请注意,指向 char 的指针可能指向空终止字符串,也可能不指向。是否不影响类型。

关于c++ - 像std::is_pointer和std::is_integral,std::is_cstring_pointer如何实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65288170/

相关文章:

c++ - 链接器返回 "relocation has an invalid symbol at symbol index..."

c++ - 如何在对象容器中搜索数据成员值?

c++ - Visual Studio 6 何时捕获结构化异常?

c++ - 在类中初始化字段的原因是什么?

xcode - 为什么当 'official' clang 支持 C++11 thread_local 时,Apple clang 不允许它

c++ - 如何修复 CLion 中对 `__imp_WSACleanup' (Boost.Asio) 的 undefined reference

c++ - 使用函数重载的可变模板参数时模板模式匹配不明确

c++ - 是否值得只包含 type_traits 以获得枚举的基础类型?

c++ - 函数模板特化与模板

c++ - 如何使用 Visual C++ 9 中的类型特征检测可按位移动的类型?