Đó là phong cách lập trình hợp pháp và tốt để sử dụng std::tr1::shared_ptr
làm std::shared_ptr
đặt using
chỉ thị trong tương ứng tiêu đề? Như thế này:Có hợp pháp không khi sử dụng tr1 :: shared_ptr trong không gian tên std trong tiêu đề?
namespace std
{
using tr1::shared_ptr;
}
Tôi biết rằng không tốt để gây ô nhiễm toàn bộ không gian tên nhưng còn trường hợp này thì sao? Có bất kỳ gotchas ẩn nào không? Trình biên dịch đích là VS2008 nhưng khả năng tương thích với các phiên bản sau cũng được mong muốn.
[Các phiên bản sau cũng phải hỗ trợ 'std :: tr1'] (http://stackoverflow.com/a/2002972/241631). Trình biên dịch sẽ không thả toàn bộ không gian tên; họ sẽ sao chép nội dung từ đó sang 'std' giống như bạn đang cố gắng làm. Vì vậy, đề cập đến các loại như 'std :: tr1 :: shared_ptr' không nên có vấn đề trong một thời gian dài. – Praetorian
@cassini Những gì Praetorian nói^Nếu bạn muốn đi tuyến đường của bạn, bạn phải làm kiểm tra trình biên dịch trong preprocessor để đảm bảo bạn không nhận được xung đột về C++ 11 hỗ trợ, và tương lai, trình biên dịch, đó là lộn xộn và không linh hoạt và không di động. – leetNightshade
@leetNightshade Thực ra, tất cả đều ở trên. Cấp, rất tiếc là không có "trình biên dịch hỗ trợ tính năng X" kiểm tra nhưng đối với hầu hết các mục đích kiểm tra tiền xử lý đơn giản cho phiên bản C++ là đủ, đi về phía trước. –