有没有办法在调用函数之前检查函数签名?
例如,这有效:
if ( typeid( int) == typeid( int) ) //...
如何对函数签名执行相同的操作?
if (typeid (void (*)(void) ) == typeid( void(*)(void) ) //that of course dosn't work
我们如何检查这两个人的签名?
void f(int);
int x(double);
for example this works:
if ( typeid( int) == typeid( int) ) //...
how to do the same with function signatures?
if (typeid (void (*)(void) ) == typeid( void(*)(void) ) //that of course dosn't work
how do we check thos two for signature?
void f(int);
int x(double);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
函数的类型在编译时已知。您可以使用
is_same
比较任意类型:结果:
类型特征值是编译时常量,可用于模板实例化和 SFINAE。
The type of a function is known at compile-time. You can compare arbitrary types using
is_same
:Result:
The type trait value is a compile-time constant and can be used in template instantiation and for SFINAE.
使用 typeid(foo).name() 。
例如:
if ( typeid(func1).name() == typeid(func2).name() )
//do stuff输出:
Use
typeid(foo).name()
.For instance :
if ( typeid(func1).name() == typeid(func2).name() )
//do stuffoutput: