gpt4 book ai didi

c++ - 重载类型转换运算符,转换为指向函数的指针

转载 作者:太空狗 更新时间:2023-10-29 21:27:01 28 4
gpt4 key购买 nike

<分区>

我遇到了一些困难,将强制转换重载到指向类的函数运算符的指针。在代码中,我想要的是:

typedef int(*funcptrtype)(int);

struct castable {
operator funcptrtype() {return NULL;}
};

但我希望能够在不使用 typedef 的情况下做到这一点。如果你很好奇,我需要这个,因为 c++11 之前的模板别名不可用(所以 typedef 技巧在模板化上下文中不是一个选项......)

我通常希望它能工作:

operator int(*)(int)() {return NULL;}

但事实并非如此。编译器 (g++ 4.6.1) 说:

error: ‘<invalid operator>’ declared as function returning a function

这个有效:

int (* operator()())(int){return 0;}

但您实际上是在重载 operator() 以返回一个函数指针 :)

标准说:

The conversion-type-id shall not represent a function type nor an array type

但它没有说明函数指针类型(第一个代码片段无论如何都可以工作...)。

有没有人知道没有 typedef 的正确语法?

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com