gpt4 book ai didi

c++ - 如何确定 C++ 对象是否为 time_t

转载 作者:太空狗 更新时间:2023-10-29 20:00:02 24 4
gpt4 key购买 nike

如何确定 C++ 对象是否为 time_t,而不是 time_t 定义为的整数类型?

我特别想模板专门化一个函数,

template <typename T> void myFunction( T val );
template<> void myFunction<time_t>( time_t val );

这样当 time_t 被定义为整数类型被传递时,非特化函数被调用。

我的 STL 实现将 time_t 定义为 long,因此 myFunction(42L) 调用 time_t 特化。我怎样才能避免这种情况?

我尝试特化long,这导致编译错误(body 已经被定义)。我还尝试了 rtti,typeid(time_t).name() 返回 "long"

我如何区分 time_t 和它定义的整数类型,和/或模板专门化 time_t 以使其整数类型不传递给专门化?

使用模板的方法会更可取,但我会接受任何解决方案,无论是运行时还是编译时。

最佳答案

没有办法阻止这种情况。

在 C++ 中,typedef 等同于其所有 目的的基类型。在编译时,它们是等价的。在运行时,它们是等价的。

您可以完全删除 time_t 的定义并将其重新定义为不同的类型,但这会破坏用户代码调用需要适当 time_t 的函数的能力。

关于c++ - 如何确定 C++ 对象是否为 time_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9335590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com