使用sectType声明整个函数类型本身(不是指针!)
Using decltype to declare the entire function type itself (not pointer!)
因此,我在标头文件中具有特定签名的函数,我想声明另一个功能,该函数在class >>>>中>>>参数再次,当然,希望没有宏...成员函数也应该具有额外的隐藏参数,即this
指针(因为它不是静态成员函数(。
现在,实际上,我很惊讶的是,GCC和ICC中的以下hack/trick ,但我不确定它是否是"法律" C 。我并不特别关心合法性,如果这是一个受支持的扩展,但不幸的是,我不希望它破坏编译器版本更新,因为有些人决定任意封锁 有用的功能,因为标准说"不"(说实话,这种东西真的很烦(。
这是我的意思:
// test.hpp
int func(int x) { return x; }
struct foo
{
decltype(func) fn; // <-- legal?
};
int test()
{
return foo().fn(6);
}
// then in test.cpp
int foo::fn(int x) { return x + 42; }
this works (与GCC和ICC一起使用(,但我不知道标准中是否是"合法"。我只是要放心,这是合法的,并且将来不会突然停止工作。
(如果它不合法,您想将其报告为错误,请标记为将其作为合法编译器扩展而不是杀死它的建议...(
(基本上,它与结构中的 int fn(int x);
相同,这就是当前的工作方式。
如果您要求我使用用例:它是为其他免费功能声明包装器成员函数,该功能在将其传递给免费函数之前,将其与this
指针一起使用。显然,它的参数必须完全匹配。同样,我不想再次键入参数。
看起来合法;但是在定义上,您必须重新输入。考虑使用完美的转发。
相关文章:
- 类的静态结构指针声明在C++
- 函数指针声明
- 指针声明
- 使用无效指针初始化指针声明符的行为是否未定义?
- 如何将指针声明以在类初始化器中的成员功能并拨打这些指针
- 指针声明和间接寻址之间的区别
- 是否可以将“自动”关键字用作函数指针声明中使用初始化的返回类型
- 与使用指针声明的字符串和C 中的数组相混淆
- 如何在C 中使用不同数据类型的类模板指针声明指针
- 指向STD :: vector,指针声明
- 为什么我们不能泛化指针声明?
- C 返回类型指针声明
- 将结构指针声明为函数的返回类型
- C++ h 和 cpp 文件中的指针声明冲突
- 为什么或何时用指针声明int
- 如何将函数指针声明指向模板函数,其返回类型取决于模板类
- 如何将方法指针声明为Typedef方法参数
- 通过参考或指针声明属性C
- C 指针声明
- 指针声明基础(多维数组指针的赋值)