В библиотеках С++ Boost, почему существует расширение ".ipp" для некоторых файлов заголовков
В библиотеках С++ Boost, почему в некоторых файлах заголовков существует расширение ".ipp"?
Кажется, что они являются заголовочными файлами, включенными в файл .hpp с тем же именем.
Является ли это соглашение общим за пределами Boost?
В чем обоснование наличия специального типа файла?
Ответы
Ответ 1
Объяснение от одного из гуру шаблонов:
Если вы хотите разделить источники шаблонов на интерфейс и (есть много веских причин для этого, в том числе контролируя экземпляр), вы не можете очень хорошо использовать одно и то же имя (foo.hpp) дважды, а foo.cpp не подходит ни для одного. foo.ipp четко определяет файл как файл реализации, предназначенный для быть включенным в foo.hpp.
Ответ 2
Я считаю, что "ipp" означает "файл реализации". то есть они фактически содержат код (для встроенных функций и шаблонов), а не просто объявление (которые находятся в файлах заголовка -.H или .HPP)