rob*_*05c 3 c++ templates typedef rtti template-specialization
如何确定C++对象是否是time_t,而不是整数类型time_t被定义为?
我特意想模板专门化一个函数,
template <typename T> void myFunction( T val );
template<> void myFunction<time_t>( time_t val );
Run Code Online (Sandbox Code Playgroud)
这样当定义了time_t的整数类型被传递时,会调用unspecialized函数.
我的STL实现定义time_t
为long
,因此myFunction(42L)
调用time_t特化.我怎么能阻止这个?
我尝试了专门化long
,这导致编译错误(正文已定义).我也试过rtti,typeid(time_t).name()
回归"long"
.
我如何区分time_t
它被定义为的整数类型,和/或模板专门化time_t使得它的整数类型不会传递给专门化?
使用模板的方法更可取,但我会接受任何解决方案,运行时或编译时.
没有办法阻止这种情况.
在C++中,a typedef
等同于其基本类型用于所有目的.在编译时,它们是等价的.在运行时,它们是等效的.
您可以删除time_t
完全定义并将其重新定义为不同的类型,但这会破坏用户代码调用期望正确的函数的能力time_t
.
归档时间: |
|
查看次数: |
261 次 |
最近记录: |