这是一个小众问题,但我正在努力寻找足够的答案。结构体成员可以是 const,但是函数指针/引用成员可以声明为 const 吗?根据我对 C++17 第 9.3 节的阅读,我不这么认为......
struct Ex {
const int i;
void (*pfn)(int i); // can pfn be a const member?
void (&rfn)(int i); // can rfn be a const member?
};
struct Ex {
const int i;
void (*const pfn)(int i); // can pfn be a const member?
void (&rfn)(int i); // can rfn be a const member?
};
使用一点抽象使这变得非常简单:
using fpr_t = void(*)(int);
struct Ex {
const int i;
const fpr_t pfn;
const fpr_t rfn;
};