Я пишу некоторые вещи, используя пространство имен tr1 в VS2008. Что произойдет, когда C++xx будет ратифицирован? Случалось ли это раньше с другими ревизиями C++? Будет ли по-прежнему работать материал tr1, или мне придется изменить все включение? Я понимаю, что делаю очень большое предположение, что эта ратификация когда-нибудь произойдет. Я знаю, что, скорее всего, никто из вас не работает в MS и не участвует в GCC, но если у вас есть опыт подобных изменений, я был бы признателен за совет.
Что произойдет с пространством имен tr1, когда C++ xx будет одобрен?
Ответы (3)
std::tr1 станет частью std в C++1x (std::tr1::shared_ptr станет std::shared_ptr и т. д.). std::tr1 будет существовать до тех пор, пока этот компилятор утверждает, что реализует TR1. В какой-то момент ваш компилятор может отбросить это утверждение и в результате отбросить std::tr1. Этого, вероятно, никогда не произойдет.
std::tr1 уже был «скопирован» в пространство имен std в бета-версии Visual Studio 2010 (с помощью директивы using)
В статье Википедии для C++0x говорится: "Большая часть новых библиотеки определены в документе Технический отчет Комитета по стандартам C++ (под названием TR1), который был опубликован в 2005 г. В настоящее время доступны различные полные и частичные реализации TR1 с использованием пространства имен std::tr1.Для C++0x они будет перемещено в пространство имен std. Однако по мере того, как функции TR1 переносятся в стандартную библиотеку C++0x, они при необходимости обновляются функциями языка C++0x, которые не были доступны в исходной версии TR1. , они могут быть дополнены функциями, которые были возможны в C++03, но не входили в исходную спецификацию TR1».
tr1 не является частью какого-либо стандарта (документ, который он обозначает, никогда не принимался) - это просто соглашение, которое обеспечивают некоторые компиляторы. Они почти наверняка будут продолжать предоставлять его в будущем.