由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - boost::function 的 syntax 问题
相关主题
C++里get array size的问题 (转载)如何 define/initialize static data member of a class templ
这两个地方是否需要typename?C++ 菜鸟问一个关于template 的问题。
where to define my template functionHelp: who has gcc 4.0 or higher
One c++ non-type template questionC++ template question
template私有成员不能用类成员函数修改?
c++ template question:template question
一个partial specialization的问题问几个C++面试题吧
C++ question about template typedef问个c++的template的问题
相关话题的讨论汇总
话题: int话题: bool话题: syntax话题: function话题: boost
进入Programming版参与讨论
1 (共1页)
r*********r
发帖数: 3195
1
boost::function f;
这句的template argument 的 syntax: bool (int) 看着很怪, 为什么是合法的呢?
这能表示一个 type 吗?
r*********r
发帖数: 3195
2
没看出来是什么 trick. 非常好奇.
r*********r
发帖数: 3195
3
看了. boost 的源码都在那儿. 不过没看出来trick 在哪儿.
有本书上说这是 legal c++, but not all compilers support it.
c++ 有这个 syntax 吗?
r*********r
发帖数: 3195
4
但是 c++ 里不能用
typedef bool (int) *fp;
只能用
typedef bool (*fp) (int);
r*********r
发帖数: 3195
5
这个应该跟库没有关系, 是c++的性质.
试了一个, 下面的可以编译.
template
class foo { };
int main()
{
foo f;
return 0;
}
r*********r
发帖数: 3195
6
搞定了, bool (int) 是 function 类型, 而不是 function pointer 类型.
下面的小程序中 T *t_ 如果换成了 T t_ 就不能编译.
#include
template
class foo {
T *t_;
public:
foo(T *t) : t_(t) {}
void call(int n) { std::cout << (*t_)(n) << std::endl; }
};
bool bar(int x) { return x == 0; }
int main()
{
foo f(&bar);
f.call(0);
return 0;
}
b********n
发帖数: 609
7
right, it's type erasure. I forgot it after so long.

【在 r*********r 的大作中提到】
: 搞定了, bool (int) 是 function 类型, 而不是 function pointer 类型.
: 下面的小程序中 T *t_ 如果换成了 T t_ 就不能编译.
: #include
: template
: class foo {
: T *t_;
: public:
: foo(T *t) : t_(t) {}
: void call(int n) { std::cout << (*t_)(n) << std::endl; }
: };

1 (共1页)
进入Programming版参与讨论
相关主题
问个c++的template的问题template
一个关于C++ template和overload的问题c++ template question:
thrust help ~~~一个partial specialization的问题
template 类的继承问题C++ question about template typedef
C++里get array size的问题 (转载)如何 define/initialize static data member of a class templ
这两个地方是否需要typename?C++ 菜鸟问一个关于template 的问题。
where to define my template functionHelp: who has gcc 4.0 or higher
One c++ non-type template questionC++ template question
相关话题的讨论汇总
话题: int话题: bool话题: syntax话题: function话题: boost