我正在寻找一种在 C++ 中提取函数返回类型的方法(无需调用它)。我想这需要一些模板魔法。
float Foo();
int Bar();
magic_template<Foo>::type var1; // Here 'var1' should be of type 'float'
magic_template<Bar>::type var2; // and 'var2' should be of type 'int'
我目前正在研究如何实现 magic_template
,但到目前为止还没有找到解决方案。
有什么想法吗?
最佳答案
看看 boost type traits图书馆,特别是 function_traits
模板提供开箱即用的此类功能。如果您不能使用 boost,只需下载代码并阅读源代码以深入了解它是如何完成的。
请注意,功能是基于类型的,而不是具体的函数,因此您可能需要在那里添加一些额外的代码。
在做了一些小测试之后,这可能不是您真正需要的,如果是,“一些额外的代码”将是非常重要的。问题在于 function_traits
模板适用于函数签名而不是实际的函数指针,因此问题已从“从函数指针获取返回类型”变为“从函数指针获取签名”这可能是那里最难的部分。
关于c++ - 提取函数的返回类型而不调用它(使用模板?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2005794/