没有 typedef 的 operator member_function_pointer_type()?
Posted
技术标签:
【中文标题】没有 typedef 的 operator member_function_pointer_type()?【英文标题】:operator member_function_pointer_type() without typedef? 【发布时间】:2013-06-16 05:05:11 【问题描述】:是否可以在不使用 typedef 的情况下创建 operator member_function_pointer_type()
(即通过内联指定成员函数指针的类型)?
例如,在实现 Safe Bool Idiom 时:
class Foo
typedef void (Foo::*bool_type)() const;
public:
operator bool_type() const;
;
在声明操作符的时候可以直接写出bool_type
的类型吗?如果有,怎么做?
【问题讨论】:
【参考方案1】:这似乎是唯一不能在不使用typedef
的情况下声明(类型转换)operator
的情况。
如果它是另一个函数 name 或另一个 operator x
,那么它工作正常:
class Foo
typedef void (Foo::*bool_type)() const;
public:
operator bool_type() const;
// other syntax
void (Foo::* some_func () const) () const; // ok! named function
void (Foo::* operator * () const) () const; // ok! operator *
void (Foo::* operator () const) () const; // error! typecasting operator
;
Demo.
【讨论】:
以上是关于没有 typedef 的 operator member_function_pointer_type()?的主要内容,如果未能解决你的问题,请参考以下文章
指向成员数组的静态指针,用于安全的operator []访问