
[Daniel James]
Maybe VC11 doesn't have template aliases, so it requires that rebind_alloc is used differently, something like 'allocator_traits::rebind_alloc<value_type>::other'
Yep, sorry. N3376 20.6.8 [allocator.traits] says: template <class T> using rebind_alloc = see below ; But we don't have template aliases yet, so we say: template<class _Other> struct rebind_alloc { // converts allocator<element_type> to allocator<_Other> typedef typename _Get_rebind_type<_Alloc, _Other>::type other; };
if that's the case then IMO it'd better if they named it something different, since it's used differently and it'd allow a smoother transition when they are implemented.
I don't think that that would buy anything. You'll get compiler errors either way (expecting real template aliases and getting fake, or vice versa), so changing the name wouldn't do anything - you'd still need an #ifdef. Stephan T. Lavavej Visual C++ Libraries Developer