LINUX.ORG.RU

Сообщения bison

 

Забавные вещи с SGI STL под GCC 2

Форум — Development

Привет всем!

Тут в процессе разработки столкнулся с интересным (на мой взгляд) поведением SGI STL под GCC. Мне нужно было написать свой контейнер, который можно было бы использовать с алгоритмами из <algorithm>. Для этого мне нужно было создать свой итераторный тип для этого контейнера. Я открыл (а что еще?!) Страуструпа, посмотрел как это делается. И вот тут начали происходить интересные вещи - код, написанный точь-в-точь, как завещает Отец С++ не компиллялся. Я попробовал в MSWC ("W" написано _намерено_! :) ) - все работает "на ура".Тогда я полез в стандарт, выяснил, что ГЦЦ неправ. Итак, собственно код, который (IMHO) в STL под GCC не работал выглядит так (только не надо спрашивать "зачем" - этот код не несет смысловой нагрузки, а получился в процессе понимания что, собсно, происходит)

#include <iterator>
typedef std::iterator<std::forward_iterator_tag, int> MyIterator;


Я полез смотреть в заголовки, и там нашел, что определение шаблонного класса iterator окружено #ifdef'ом, и препроцессором выкидывается. Проследив дальше, откуда ноги растут, я увидел (см. файлик stl_config.h, __STL_NO_NAMESPACES), что для GCC версий 2.х.8+ это сделано намерено.

ВНИМАНИЕ, ВОПРОС: Кто-нибудь может объяснить ЗАЧЕМ это сделано, и как с этим жить?!! Вернее, как мне все-таки вернуть шаблон std::iterator<> без правки заголовков?

И еще туда же: в стандарте написано, что STL должен жить в namespace'е std. По-моему, было бы неплохо, если SGI STL это требовал. Если уж так хочется избавиться от std:: всегда можно использовать using, это честнее...

PS Я думаю, что это не очень важно, но на всякий случай:
FreeBSD 4.4-STABLE
gcc version 2.95.3 20010315 (release) [FreeBSD]
Версию STL где посмотреть не знаю (SGI).

bison
()

linux-mozilla-0.9.7/linux-netscape-6.1.1-1 and Java under FreeBSD?

Форум — Desktop

Привет! У кого-нибудь работает Java-plugin в вышеназываных браузерах на FreeBSD? У меня выскакивает Java console, в которой java.lang.ClassNotFoundException: java.io.FileNotFoundException: http://......

FreeBSD 4.4-STABLE, версии браузеров - см. сабж, все ставится из портов. Заранее спасибо

bison
()

RSS подписка на новые темы