我们可以使用typeof运算符获取gcc中函数返回的类型,如下所示:
typeof(container.begin()) i;
是否有可能为采取某些参数的函数做类似的事情,但不给它们?例如。当我们有功能时:
MyType foo(int, char, bool, int);
我想检索这个“MyType”(可能使用typeof运算符),假设我只知道函数的名称(“foo”),并且不知道它所采用的参数。有可能吗?
答案 0 :(得分:5)
在C ++中,返回值的类型不是方法签名的一部分。即使有办法获得方法的返回类型,你也必须处理获得多个方法的可能性,而不知道哪个方法带有你想要的返回类型。
答案 1 :(得分:5)
typeof
是非标准扩展程序,因此如果您希望代码可移植,请不要使用它。
它的语法是typeof(expression)
,所以你需要给它一个调用函数的表达式(因此它的类型是MyType
),如下所示:
typeof(foo(int(),char(),bool(),int()))
答案 2 :(得分:0)
C ++ 0x将使用decltype
和auto
关键字引入Type inference。
在C ++中,您可以使用typeof
(由Mike Seymour建议)或SFINAE原则。