tags:

views:

745

answers:

2

In the C++ Boost libraries, why is there a ".ipp" extension on some header files?

It seems like they are header files included by the ".hpp" file of the same name.

Is this convention common outside of Boost?

What is the justification for having a special file type?

+6  A: 

I believe "ipp" stands from "implementation" file. i.e, they hold actually code (for inline functions & templates) rather than just declaration (which are in the header --.H or .HPP -- files)

James Curran
+15  A: 

Explanation from one of the template gurus:

If you want to split up your template sources into interface and implementation (there are lots of good reasons to do that, including controlling instantiation), you can't very well use the same name (foo.hpp) twice, and foo.cpp wouldn't be appropriate for either one. foo.ipp clearly delineates the file as an implementation file intended to be #included in foo.hpp.

Anonymous