4

跟风的结果是什么?它是不规范的、未定义的行为还是定义明确且规范的?

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

我问的原因是因为我想知道好奇,因为我想知道任意类型是否是指针。有了这个,我还意味着包括 shared_ptr 和朋友。我想知道是否有一个类型特征(谓词),或者,如果没有,我是否可以使用 pointer_traits 并检测 element_type 是否被声明。

4

1 回答 1

5

它说它从 20.6.3p1 开始格式错误,因为它没有element_type并且不是类模板实例化

typedef 见下文 element_type;

类型:Ptr::element_type 如果存在这样的类型;否则,如果 Ptr 是形式的类模板实例化,则为 T SomePointer<T, Args>,其中 Args 是零个或多个类型参数;否则,专业化是不正确的

于 2013-03-11T21:58:19.067 回答