【发布时间】:2015-05-08 16:22:14
【问题描述】:
编辑:这个问题最初的标题是“Using std::bind to create inline function”,但这并不是我真正想要的:我只是想要一种简单的方法来给函数起别名。
我想将std::chrono::high_resolution_clock::now 公开为独立函数。也就是说,我想做以下事情:
auto current_time = std::bind(std::chrono::high_resolution_clock::now);
不幸的是,由于这是在一个头文件中,它会在链接时导致current_time 的多个定义。有没有办法从std::bind 返回内联函数?
【问题讨论】:
-
inline auto current_time() { return std::chrono::high_resolution_clock::now(); }有什么问题? -
@T.C.没什么特别的(这是我用作解决方法的方法),我只是碰巧认为它有点难看。我真正喜欢的是函数别名,我们有类型别名的方式;即,
using current_time = std::chrono::high_resolution_clock::now;的行为本质上类似于#define current_time std::chrono::high_resolution_clock::now,但没有预处理器参与。 -
对于标题,您始终可以为其提供内部链接。
-
@T.C.我可能会误解你,但重点是在多个翻译单元中公开此功能-因此需要
inline。 -
为什么需要内联才能在多个翻译单元中使用?在标头中声明函数,将其非内联定义为对
std::chrono::high_resolution_clock::now()的调用。不知道为什么我什至要对此发表评论......只是继续使用您已经拥有的功能(这不是解决方法,而是解决方案)。