[C++] export template
это почти никто не поддерживает
А собираются поддерживать? Или им пох на стандарт?
в какой-то книжке вычитал: "мы в микрософте всегда считаем, что стандарт можно улучшить..."
вот они его и улучшили
![](/images/graemlins/grin.gif)
Не, про йобнутость майкрософта я знаю, просто не ожидал, что почти никто не поддерживает.
Также насчет компиляторов, поддерживающих экспорт... я точно не уверен, но помнится, когда читал ман по icc 9-му, видел там параметр -export (собсно экспорт шаблонов)
![](/images/graemlins/smile.gif)
меж компиляторами она все равно не переносима - соответственно нормально не переносима и между несколькими проектами.
а внутри одного проекта - можно и h-никами пользоваться для этих же целей.
1. В случае изменения реализации какой-либо из функций шаблона не приходится перекомпилировать весь проект, а только определения шаблонов.
2. В отличия от включаемого .h файла с определениями шаблона, не приходится заботиться об изменении смысла выражений, которыми пользуешься в определении шаблона. К примеру, если у меня в файле template.h объявлен шаблон, который пользуется функцией std::min, то в зависимости от того, объявлю я в таком порядке:
#include "template.h"
#include <windows.h>
или в таком
#include <windows.h>
#include "template.h"
код скомпилится или нет. В первом случае - все в порядке. Во втором в файле windows.h определяются макросы min a max, которые портят всю малину. И я не могу предусмотреть такой вещи, что какой-либо из файлов, включенных до моего файла с шаблонами, не изменит нафиг все его поведение. Вот.
эти два небольшие плюса не стоят того гемора, который придется преодолеть разработчикам чтобы реализовать вышеприведенную фичу.
Не могу с тобой согласиться.
Тогда вперед, реализуй.
http://gcc.gnu.org/ml/gcc/2006-02/msg00122.html можно найти ссылку на статью про то, как ее реализовывали. Даже среди комитетчиков были разногласия насчет ее нужности. Тем не менее, плюсовые челы из gcc вроде как хотят в перспективе это сделать -- но не раньше, чем появятся link-time optimizations (инфраструктура которых для этого нужна т.е. на ближайшие 2 года об этом можно забыть.
export -- самая геморройно реализуемая фича С++ для компилятора, и кроме как в Comeau, ее нет нигде. В
#include <windows.h>
#undef min
Использование экспорта шаблонов в настоящее время не рекомендуется, ибо непереносимо.
Вопросу экспорта шаблонов посвещена отдельная тема в книге Герба Саттера "Новые сложные задачи на C++".
Оставить комментарий
erotic
Последняя вижл студия от Microsoft не поддерживает что-ли? Вроде в Струструпе написано, что по стандарту должно...А компилятор пишет пару ошибок и ворнинг, что ключевое слово export еще не поддерживается, но заререзвировано для будущего использования...