Как узнать, какую реализацию STL-строки я использую? - PullRequest
2 голосов
/ 28 марта 2011

Пункт 15 Effective STL говорит, что существует по крайней мере 6 различных реализаций std :: string.Но если мне нужно знать, какую реализацию я использую, как мне узнать, какую реализацию я использую?std :: string из gcc не показывает исходный код (это все в файле .so), так как мне узнать?Не могу найти ничего здесь , поэтому, если в будущем мне понадобится найти такую ​​информацию, где я могу найти?

1 Ответ

6 голосов
/ 28 марта 2011

Посмотрите на заголовок <string> и посмотрите авторские права? Я добавлю, что, насколько я знаю, std::string - это typedef, равный basic_string<>, то есть шаблонного класса. Теперь, насколько я помню, только Comeau C ++ поддерживает шаблоны экспорта, поэтому все другие компиляторы должны иметь классы шаблонов, определенные И реализованные в заголовочных файлах. Вы используете GCC, поэтому, вероятно, в заголовке <string> вы найдете большую часть реализации строки. (Я добавлю, что это обычная уловка - создавать шаблон "shim" / "proxy", который вызывает не-шаблонные классы для минимизации размера компиляции, поэтому не вся реализация должна быть в заголовочном файле, и что для конкретный случай std::string многих методов МОЖЕТ быть определен поверх библиотеки «string» C (но, вероятно, не будет, потому что std::string считает null допустимым символом)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...