Meh*_*dad 5 c++ syntax typedef member-function-pointers operator-overloading
是否可以在operator member_function_pointer_type()不使用typedef 的情况下(即通过指定内联的成员函数指针的类型)?
例如,在实施Safe Bool Idiom时:
class Foo
{
typedef void (Foo::*bool_type)() const;
public:
operator bool_type() const;
};
Run Code Online (Sandbox Code Playgroud)
bool_type在声明运算符时是否可以直接写出类型?如果是这样,怎么样?
似乎这是唯一一种在operator不使用 a 的情况下无法声明 a (类型转换)的情况typedef。
如果它是另一个函数名称或另一个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
};
Run Code Online (Sandbox Code Playgroud)
演示。
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |