作者:落地有声800_491_431 | 来源:互联网 | 2022-12-09 13:23
我今天遇到了一个有趣的问题,涉及从非匹配类型的函数指针赋值指向.
编辑:受@Frank启发的简短示例:
void printSquare(int x) { printf("%d\n", x * x); }
int* foo() {
using res_t = int*;
return res_t(printSquare);
}
我希望代码不会编译,因为函数的返回类型应该是int*
,它绝不能从类型系统边界内的函数引用或-pointer创建(就我而言)意识到).当直接返回或res_t
用int *
编译器代替时拒绝这个程序,但是using
在它之间使用-declaration,它会编译并运行(当然,指向的位置不包含int,而是一个函数).
原始代码和问题保存在下面的单独答案中.