gpt4 book ai didi

c++ - 为什么基本类型不允许标准库类上的extern模板

转载 作者:行者123 更新时间:2023-12-02 10:01:02 24 4
gpt4 key购买 nike

std namespace here具有以下规则:

A program may explicitly instantiate a class template defined in the standard library only if the declaration (a) depends on the name of at least one program-defined type and (b) the instantiation meets the standard library requirements for the original template.


为什么存在该规则?如果有人想外部说例如 vector<int>,那么在该 typedef之上的 int或包含 structint是否足够好?我不确定编译器/链接器是否可以将 struct简化为 int,但是可以简化 typedef

最佳答案

extern


不允许使用类型名称,因为类型名称需要使用代码进行编译,而外部的内容可以稍后进行编译和链接。
并回答您的主要问题,如果正在编译的代码定义了确切的类型,那么在该代码中的任何位置(当然使用正确的语法),也可以使用typedef或类似的东西
最后
禁止从std编译未定义的模板,因为如果您这样做,有些库将无法工作。

关于c++ - 为什么基本类型不允许标准库类上的extern模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62558771/

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