标题或cpp中的模板函数体

时间:2017-02-10 01:33:59

标签: c++ performance templates

是否首选将模板函数的主体放在头文件或其相应的cpp文件中?为什么?

由于在Nikos Athanasiou帖子中找到this所写的答案,我有一些我稍微修改过的代码,如下所示。目前,我在单个头文件中包含以下所有代码。

我已经阅读了那里的线程,解释了如何在cpp文件的头文件和模板函数体中获得模板函数定义,但我想知道哪些被认为是正确的。两种选择都有任何性能优劣吗?

typedef std::chrono::duration<float> fsec;

template<typename F, typename... Args>
float ftime_fsec(F func, Args&&... args){
    auto t1 = std::chrono::high_resolution_clock::now();
    func(std::forward<Args>(args)...);
    return std::chrono::duration_cast<fsec>
        (std::chrono::high_resolution_clock::now() - t1).count();
}

1 个答案:

答案 0 :(得分:0)

将它放入头文件中绝对是正确的。它可以帮助您避免输入冗余代码,它也可以用作某种&#34;指南&#34;的声明。对于编译器。它实际上并没有在对象意义上定义任何东西,它只是为后面的定义提供了一个指定类型的指南。

相关问题