在C ++ Boost库中,为什么某些头文件中存在“.ipp”扩展名

在C ++ Boost库中,为什么在某些头文件中有“.ipp”扩展名?

看起来他们是同名的“.hpp”文件包含的头文件。

这个约定在Boost之外是否共同?

什么是具有特殊文件types的理由?

来自模板大师之一的解释 :

如果你想把你的模板源分解成接口和实现(有很多很好的理由去做,包括控制实例化),你不能很好地使用同一个名字(foo.hpp)两次,而foo.cpp将不适合任何一个。 foo.ipp清楚地将文件描述为一个实现文件,用于在foo.hpp中包含#include。

我相信“ipp”代表“实施”文件。 即它们实际上包含代码(用于内联函数和模板)而不仅仅是声明(它们在头文件中,即.H或.HPP文件中)