2010-01-04 16 views
9

VS2008'deki tr1 ad alanını kullanarak bazı şeyler yazıyorum. C++ xx onaylandığında ne olur? Bu, diğer C++ düzeltmeler ile daha önce oldu mu? Tr1 şeyleri hala işe yarayacak mı yoksa tüm eşyalarımı değiştirmek zorunda mı kalacak? Bu onaylamanın bir gün gerçekleşeceğine dair çok büyük bir varsayımı yaptığımın farkındayım. Muhtemelen hiçbirinizin MS için çalışmadığınızı veya GCC'ye katkıda bulunduğunu biliyorum, ancak bu tür değişikliklerle ilgili deneyiminiz varsa tavsiyeyi takdir ediyorum.C++ xx onaylandığında ad alanı tr1'e ne olacak?

+1

"diğer C++ revizyonları" gerçekten karşılaştırılabilir değildir. C++ 03 temel olarak C++ 98'e yönelik bir dizi düzeltmedir. C++ 0x, C99 gibi yeni bir standardı çağırmaya değecek ilk şey, bir süredir “yeni standardı destekleyen uygulamalar” ve “sadece eski standardı destekleyen uygulamalar” arasında önemli bir bölünme olacağı anlamına geliyor. . 2003'te C++ kullanmamıştım, ama sanırım bölünme daha çok "derleyiciler yetiştirildikleri gibi corrigenda'yı bir araya getirmişlerdi ve derhal terkedilmiş derleyiciler asla standartlara çok yakın olmadılar" gibi. –

+0

Peki 2003'te C++ ve gerçekten de 1985'te kullandım (ya da en azından denedim - C++ 'nın bir E sürümünü, sorumlu olduğum UNIX kutucuğuna getirmeye çalıştım ve başarısız oldum). ve her şeyden önce, ticari uygulamalar için mantıklı olan şey oldu - yeni şeyleri kullanmayın. –

+0

@Neil - daha fazla bir iç araç, ama mükemmel genel tavsiye – Steve

cevap

10

std :: tr1, C++ 1x'deki std'nin bir parçası olacaktır (std :: tr1 :: shared_ptr, std :: shared_ptr olur, vb.). std :: tr1, derleyicinin TR1'i uyguladığını iddia ettiği sürece devam edecektir. Bir noktada derleyiciniz bu talebi düşürebilir ve sonuç olarak std :: tr1'i bırakabilir. Bu muhtemelen asla olmayacak.

std :: tr1 zaten (using yönergesi ile) Visual Studio 2010 Beta ad std içine "kopyalanmış" olmuştur

2

tr1 herhangi bir standardın parçası değildir (hiçbir zaman kabul edilmediğinden dolayı kağıda dökülür) - bu sadece bazı derleyicilerin sağladığı bir sözleşmedir. Neredeyse kesinlikle geleceğe uzun vadede devam edecekler.

6

C++0x için Vikipedi girdisi, "Yeni kitaplıkların büyük bir kısmı, 2005'te yayınlanan C++ Standartlar Komitesinin Kitaplık Teknik Raporu (TR1 olarak adlandırılır) belgesinde tanımlanmıştır. Şu anda TR1'in çeşitli tam ve kısmi uygulamaları kullanıma sunulmuştur. namespace std :: tr1 kullanarak C++ 0x için bunlar namespace std'ye taşınır. Ancak, TR1 özellikleri C++ 0x standart kitaplığına getirildikçe, C++ 0x diliyle uygun şekilde yükseltilirler. İlk TR1 sürümünde mevcut olmayan özellikler. Ayrıca, C++ 03 altında mümkün olan ancak orijinal TR1 özelliklerinin bir parçası olmayan özellikler ile geliştirilebilirler. "

+5

Ve şimdi insanlar Wikipedia'dan verbatim alıntılar sağlayan cevaplar sağlamak için upvotes alıyor! –

+0

@Neil: google artık çok uzakta değil –

+0

Sadece wikipedia dan değil, ama yardımcı değil. Daha iyi! Şimdi std :: tr1 kullanırsanız, çok uzun bir süre çalışacaktır. "Çok" değeri derleyicinize göre değişir, ancak kaynağınıza geri döndüğünüzde ve boost :: veya tr1 :: to std :: –