gpt4 book ai didi

c++ - 我可以将 `extern template` 放入头文件中吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:52:55 26 4
gpt4 key购买 nike

在头文件中放一个外部模板,然后在单元编译文件中显式模板实例化有效吗?

例如在g++ 的编译示例中,这是为了避免 nothing<int> 的实例化吗?两次?为什么没有人这样写而更喜欢复制 extern template每个 .cpp 文件中的行?

A.hpp:

#ifndef HEADERC_A
#define HEADERC_A

template< typename T > struct nothing {};
extern template struct nothing<int>;

#endif

A.cpp:

#include "A.hpp"

template struct nothing<int>;

ma​​in.cpp:

#include "A.hpp"
#include <iostream>

int main()
{
nothing<int> n;
return 0;
}

最佳答案

好吧,这肯定是“有效的”,因为 gcc 将编译它,并且几乎可以执行您期望发生的事情。

至于为什么不是每个人都这样做,好吧,一旦你超越了像这样的微不足道的情况,并且开始管理大量广泛使用的模板,它很快就会变得不那么简单实际跟踪每个模板使用的每个参数,以便可以以这种方式显式实例化它。

对于您来说,编译器将更容易跟踪它。

关于c++ - 我可以将 `extern template` 放入头文件中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27758508/

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