相关疑难解决方法(0)

使用Boost获取arity和paramerter类型的成员函数?(升压:: function_traits)

它适用于普通的香草功能.下面的代码工作得很好.它打印的应该是什么:

int __cdecl(int, char)
2
int,char
Run Code Online (Sandbox Code Playgroud)
#include <boost/type_traits.hpp>
#include <boost/function.hpp>
#include <boost/typeof/std/utility.hpp>

#include <iostream>

using std::cout;
using std::endl;

int foo(int, char) {
 return 0;
}
int main() {
    typedef BOOST_TYPEOF(foo) foo_type;;
    typedef boost::function_traits<foo_type> function_traits;

    cout << typeid(foo_type).name() << endl;
    cout << function_traits::arity << endl;
    cout << typeid(function_traits::arg1_type).name() << ",";
    cout << typeid(function_traits::arg2_type).name() << endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

所以,问题是,如果foo是类栏的成员函数,怎么能这样做呢?

struct bar {
    int foo(int, char) { return 0; }
};
Run Code Online (Sandbox Code Playgroud)

我尝试过这些结构的无数组合:BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()BOOST_TYPEOF_REGISTER_TYPE()boost :: ref boost :: remove_pointer boost :: bind boost :: …

c++ boost function member

7
推荐指数
1
解决办法
5710
查看次数

标签 统计

boost ×1

c++ ×1

function ×1

member ×1