pointer_traits为既不是 X<A、T...>也不是提供成员类型定义element_type的类型提供了什么?

What does pointer_traits provide for types that are neither X<A, T...> nor provide a member typedef element_type?

本文关键字:类型 成员 定义 成员类 element type 什么 traits lt gt pointer      更新时间:2023-10-16

下面的结果是什么?它是不规范的未定义行为还是定义良好的行为?

struct A {};
std::pointer_traits<A> x;

我问这个问题的原因是出于好奇,也因为我想知道任意类型是否是指针。我还打算包括shared_ptr和friends。我想知道是否有一个类型trait(谓词),或者,如果没有,我是否可以使用pointer_traits并检测element_type是否被声明。

它说它从20.6.3p1是错误的,因为它没有element_type,也不是一个类模板实例化

typepedef参见下面的element_type;

Type: Ptr::element_type类型存在;否则,如果Ptr是类模板实例化,则为T形式SomePointer<T, Args>,其中Args为零或更多类型参数;否则,专门化是病态的