【发布时间】:2017-07-13 08:34:52
【问题描述】:
我想知道如何实现一个result_of模板类来获取函数的返回类型。
我知道 C++11 有 std::result_of 或 decltype。但是 boost 是如何在 C++98 标准中实现这个特性的呢?
我尝试从源代码中学习,但我没有明白这一点。
应该是这样的:
int fint() { return 0;}
double fdouble() { return double(0);}
cout << sizeof(result_of<fint>::type) << endl; // should be 4
cout << sizeof(result_of<fdouble>::type) << endl; // should be 8
result_of<fint>::type x; // same as `int x;`
result_of<fdouble>::type y; // same as `double y;`
【问题讨论】:
-
@tobi303 是的,我已经更正了
-
专门针对
Ret (*) (T1, ...,TN)到一些N。 -
这是一个有趣的问题,但您已经知道答案:boost 实现了它。恕我直言,如果你在 boost 代码上说出你不理解的东西会更好,因为我怀疑有人会想出比 boost 更简单的东西
-
我不知道哪里错了,但是代码就是无法编译......
标签: c++ templates boost metaprogramming c++98