我想知道这件事:在动态模板中是否有一个干净的包含方法?
比方说,你有一个模板类,要保持动态。因此,你必须在头文件中实现它。
现在说你有几个包含其中通常会在源文件属于,像头文件,例如
#include <algorithm>
#include <cassert>
#include <cmath>
#include <iostream>
这样做的结果是,每一个时刻,一个包括你的模板类,所有的那些也将包括在内。这让我在这里绊倒 - 这看起来很肮脏。
所以我的问题是,有没有办法做到这一点更好?没有离开动态模板类的概念,那就是。
在SO上,我找到了local #includes,但在那个答案中,答案是关于将包含在源文件中。
我会说,不,一般没有办法。如果你只包含'iostream'来实现一个自定义的流操作符,那么'iosfwd'就可以替代它。但这不是一般的事情。 – StoryTeller
我不认为有一种方法,因为模板必须随时随地产生新类型,并生成该类型所有的声明都需要 – Sopel
我曾经不包含任何头文件,并让我的头文件的用户包括当需要时,必要的标题。尽管我改变了主意,因为包含在你自己的头文件本身改进了本地化,读者可以很容易地看到你的依赖关系。它还使代码更易维护,并且由于丢失包含而导致错误更少,如果您进行更改以更改头文件依赖性。 –