使用gcc中的“typeof”运算符检索函数返回的类型

时间:2009-11-09 17:58:12

标签: c++ gcc typeof

我们可以使用typeof运算符获取gcc中函数返回的类型,如下所示:

typeof(container.begin()) i;

是否有可能为采取某些参数的函数做类似的事情,但不给它们?例如。当我们有功能时:

MyType foo(int, char, bool, int);

我想检索这个“MyType”(可能使用typeof运算符),假设我只知道函数的名称(“foo”),并且不知道它所采用的参数。有可能吗?

3 个答案:

答案 0 :(得分:5)

在C ++中,返回值的类型不是方法签名的一部分。即使有办法获得方法的返回类型,你也必须处理获得多个方法的可能性,而不知道哪个方法带有你想要的返回类型。

答案 1 :(得分:5)

typeof是非标准扩展程序,因此如果您希望代码可移植,请不要使用它。

它的语法是typeof(expression),所以你需要给它一个调用函数的表达式(因此它的类型是MyType),如下所示:

typeof(foo(int(),char(),bool(),int()))

答案 2 :(得分:0)

C ++ 0x将使用decltypeauto关键字引入Type inference
在C ++中,您可以使用typeof(由Mike Seymour建议)或SFINAE原则。