Как справиться с развивающимся пространством имен c ++ std ::? например: std :: tr1 :: shared_ptr vs. std :: shared_ptr vs. boost :: shared_ptr vs. boost :: tr1 :: shared_ptr

Для кода, над которым я сейчас работаю, нам иногда нужно скомпилировать на некоторых старых системах со старыми компиляторами (например, мы запускаем sims на более старом IBM BlueGene / L, контракт на поддержку которого диктует какой-то довольно старый компилятор C ++). Сам код использует shared_ptrs и изначально был написан для использования std :: tr1 :: shared_ptr. При компиляции на на старой машине BlueGene, я быстро понял, что у нее нет реализации tr1 ::, и поэтому я переключился на boost :: shared_ptr. Оказывается, есть также boost :: tr1 :: shared_ptr. Теперь, когда код находится используется более широко за пределами нашей исследовательской группы, переносимость становится еще более важной.

Каковы (?) наилучшие методы работы с ними, чтобы Что касается возникающих проблем со стандартной библиотекой в ​​большой кодовой базе? Я предполагаю, что в новом стандарте C ++ 11 shared_ptr больше не будет находиться в пространстве имен tr1, что добавляет еще один потенциал: std :: shared_ptr, однако я предполагаю, что широкая поддержка этого будет невозможна. Я бы хотел использовать последний стандарт, если это возможно, но мне нужно сохранить переносимость. Стоит ли мне просто использовать ускорение?

9
задан MarkD 17 August 2011 в 15:37
поделиться