c – 如何从函数类型自动推断返回类型?
发布时间:2020-12-16 09:35:35 所属栏目:百科 来源:网络整理
导读:我正在使用boost :: python来创建C库的 Python包装器.在某些时候,boost :: python需要一个指向成员函数(或兼容的东西)的指针,如: template class MyClass,typename ValueTypevoid (*setter_function)(MyClass,ValueType)// This doesn't compile,but you go
我正在使用boost ::
python来创建C库的
Python包装器.在某些时候,boost :: python需要一个指向成员函数(或兼容的东西)的指针,如:
template <class MyClass,typename ValueType> void (*setter_function)(MyClass&,ValueType) // This doesn't compile,but you got the idea. my_boost_python_call(setter_function f); 由于我正在包装的类具有以下形式的setter: template <class MyClass,typename ValueType> MyClass& (MyClass::*setter_method)(ValueType) 我写了一个“转换”功能: template <typename MyClass,typename ValueType,setter_method<MyClass,ValueType> fluent_setter> void nonfluent_setter(MyClass& instance,ValueType value) { (instance.*fluent_setter)(value); } 我可以这样使用: class Foo { public: Foo& bar(int value); }; my_boost_python_call(nonfluent_setter<Foo,int,&Foo::bar>); 到目前为止,这种方法效果很好,但我想知道是否有办法让这更加“简单”(使用). 你觉得在某种程度上可能得到这样的东西: // return type is somehow inferred from the member function pointer my_boost_python_call(nonfluent_setter<Foo,&Foo::bar>); // or even a syntax similar to boost::python::make_function my_boost_python_call(make_nonfluent_setter<Foo>(&Foo::bar)); 所有解决方案(甚至解释如何专门提升boost :: python来处理我的特定情况)都是受欢迎的. 谢谢. 解决方法
无法在C中自动推导返回类型,并且不能根据返回类型重载函数.
在C 0x中,有一个名为decltype的新功能可能会引起关注. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |