Что произойдет с пространством имен tr1, когда C++ xx будет одобрен?

Я пишу некоторые вещи, используя пространство имен tr1 в VS2008. Что произойдет, когда C++xx будет ратифицирован? Случалось ли это раньше с другими ревизиями C++? Будет ли по-прежнему работать материал tr1, или мне придется изменить все включение? Я понимаю, что делаю очень большое предположение, что эта ратификация когда-нибудь произойдет. Я знаю, что, скорее всего, никто из вас не работает в MS и не участвует в GCC, но если у вас есть опыт подобных изменений, я был бы признателен за совет.


person Steve    schedule 04.01.2010    source источник
comment
другие версии С++ на самом деле несопоставимы. C++03 был просто набором исправлений C++98. C++0x — это первое, что стоит назвать новым стандартом, как C99, в том смысле, что в течение некоторого времени будет значительное разделение между реализациями, которые поддерживают новый стандарт, и реализациями, которые поддерживают только старый стандарт. Я не использовал C++ в 2003 году, но я предполагаю, что разделение тогда было больше похоже на то, что компиляторы, которые все еще находились в стадии разработки, включали исправления по мере их появления, и в любом случае заброшенные компиляторы никогда не были очень близки к стандарту.   -  person Steve Jessop    schedule 05.01.2010
comment
Что ж, я использовал C++ в 2003 году и даже в 1985 году (или, по крайней мере, пытался - я пытался запустить E-версию C++ на UNIX-системе, за которую я отвечал, и потерпел неудачу). и все это время разумной вещью для коммерческих приложений было — не использовать новые вещи.   -  person    schedule 05.01.2010
comment
@Neil - это скорее внутренний инструмент, но отличный общий совет   -  person Steve    schedule 05.01.2010


Ответы (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)

person Terry Mahaffey    schedule 04.01.2010

В статье Википедии для C++0x говорится: "Большая часть новых библиотеки определены в документе Технический отчет Комитета по стандартам C++ (под названием TR1), который был опубликован в 2005 г. В настоящее время доступны различные полные и частичные реализации TR1 с использованием пространства имен std::tr1.Для C++0x они будет перемещено в пространство имен std. Однако по мере того, как функции TR1 переносятся в стандартную библиотеку C++0x, они при необходимости обновляются функциями языка C++0x, которые не были доступны в исходной версии TR1. , они могут быть дополнены функциями, которые были возможны в C++03, но не входили в исходную спецификацию TR1».

person Permaquid    schedule 04.01.2010
comment
И теперь люди получают голоса за предоставление ответов, которые являются дословными цитатами из Википедии — путь вперед! - person ; 05.01.2010
comment
Это не только дословно из Википедии, но и бесполезно. Даже лучше! Если вы используете std::tr1 сейчас, он будет работать очень долго. Значение very будет варьироваться в зависимости от вашего компилятора, но достаточно долго, чтобы вы могли вернуться к исходному коду и изменить boost:: или tr1:: на std:: - person Nick Bastin; 05.01.2010
comment
@Neil: Есть ли более предпочтительный метод, когда дословная цитата из Интернета предполагает ответ на вопрос? - person Drew Dormann; 05.01.2010
comment
@Shmoopty Да, предоставьте краткое изложение в одном предложении, например, Википедия, этот хорошо известный шрифт знаний C ++, а затем ссылку. Таким образом, если Википедия обновляется, то же самое происходит и с ТАКИМ ОБРАЗОМ. Вот почему эта штука называется паутиной. - person ; 05.01.2010
comment
Есть ссылка. Раздел, выделенный жирным шрифтом, добавляет к предыдущему комментарию на этой странице, и я разместил его, потому что это было новостью для меня, и я подумал, что это может быть либо неправильно, либо новость для кого-то еще. А так как C++0x не доработан (насколько я понимаю), то может и не получиться. Первоначально я думал о том, чтобы просто опубликовать ссылку и предложить задающему вопросы выполнить соответствующий поиск в Интернете по стандартам и связанным с ними документам, но, знаете ли, это показалось мне слишком снисходительным. Что касается голосования - я был бы рад подарить его любому желающему. - person Permaquid; 07.01.2010

tr1 не является частью какого-либо стандарта (документ, который он обозначает, никогда не принимался) - это просто соглашение, которое обеспечивают некоторые компиляторы. Они почти наверняка будут продолжать предоставлять его в будущем.

person Community    schedule 04.01.2010