我正在查看nullptr 的模拟版本,并看到了这个转换运算符(nullptr_t 的成员):
template<class C, class T> // or any type of null
operator T C::*() const // member pointer...
{ return 0; }
这种指向成员函数的语法让我感到困惑。我通常希望看到这样的类型
R (C::*)(I1, I2, ...)
使用上面的模板,没有输入参数。在这种情况下,我无法弄清楚类型推导是如何工作的。我很难形成一个特定的问题,除了,这是如何工作的?如果我有这样的代码:
typedef int (MyClass::*MyTypedef)(float);
MyTypedef m = nullptr;
我猜 T 推断为 int,而 C 推断为 MyClass。什么“发生”浮动?