是否可以在不使用typedef的情况下创建operator member_function_pointer_type()
(即通过指定内联的成员函数指针的类型)?
例如,在实施Safe Bool Idiom时:
class Foo
{
typedef void (Foo::*bool_type)() const;
public:
operator bool_type() const;
};
是否可以在声明运算符时直接写出bool_type
的类型?如果是这样,怎么样?
答案 0 :(得分:1)
似乎这是唯一一种在不使用operator
的情况下无法声明(类型转换)typedef
的情况。
如果它是另一个函数 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
};