Index: trunk/nv/stl/array.hh
===================================================================
--- trunk/nv/stl/array.hh	(revision 383)
+++ trunk/nv/stl/array.hh	(revision 384)
@@ -35,8 +35,9 @@
 		static SizeType get( SizeType requested, SizeType capacity, SizeType max_size )
 		{
+			SizeType minimum = nv::min<SizeType>( capacity, 4 );
 			SizeType remaining = max_size - capacity;
 			if ( remaining < requested ) return 0;
 			SizeType additional = nv::max( requested, capacity );
-			return ( remaining < additional ? max_size : capacity + additional );
+			return nv::max( minimum, remaining < additional ? max_size : capacity + additional );
 		}
 	};
@@ -600,57 +601,4 @@
 	using vector = array_base_t < growing_container_allocator< growable_dynamic_storage< T > > >;
 
-// 	template < typename T, typename ContainerAllocator >
-// 	class vector_base
-// 	{
-// 	public:
-// 		typedef T         value_type;
-// 		typedef size_t    size_type;
-// 		typedef ptrdiff_t difference_type;
-// 		typedef T*        pointer;
-// 		typedef const T*  const_pointer;
-// 		typedef T*        iterator;
-// 		typedef const T*  const_iterator;
-// 		typedef T&        reference;
-// 		typedef const T&  const_reference;
-// 
-// 	protected:
-// 		ContainerAllocator m_storage;
-// 	};
-
-// 	template< typename T, size_t N >
-// 	class static_vector : public detail::pointer_iterators < static_vector< T, N >, T, false >
-// 	{
-// 	public:
-// 		typedef T         value_type;
-// 		typedef size_t    size_type;
-// 		typedef ptrdiff_t difference_type;
-// 		typedef T*        pointer;
-// 		typedef const T*  const_pointer;
-// 		typedef T*        iterator;
-// 		typedef const T*  const_iterator;
-// 		typedef T&        reference;
-// 		typedef const T&  const_reference;
-// 		typedef nv::reverse_iterator<iterator>       reverse_iterator;
-// 		typedef nv::reverse_iterator<const_iterator> const_reverse_iterator;
-// 
-// 		static_vector() : m_size(0) {}
-// 
-// 		inline const_pointer data() const { return m_data; }
-// 		inline pointer data() { return m_data; }
-// 		inline size_type size() const { return m_size; }
-// 		inline bool empty() const { return !m_size; }
-// 		inline size_type   raw_size() const { return N * sizeof( T ); }
-// 		inline const char* raw_data() const { return (const char*)m_data; }
-// 		inline char*       raw_data() { return (char*)m_data; }
-// 
-// 		inline reference       front() { NV_ASSERT( !empty(), "front() called on empty data!" );  return m_data[0]; }
-// 		inline const_reference front() const { NV_ASSERT( !empty(), "front() called on empty data!" ); return m_data[0]; }
-// 		inline reference       back() { NV_ASSERT( !empty(), "front() called on empty data!" ); return m_data[m_size - 1]; }
-// 		inline const_reference back() const { NV_ASSERT( !empty(), "front() called on empty data!" ); return m_data[m_size - 1]; }
-// 	protected:
-// 		value_type m_data[N];
-// 		size_type  m_size;
-// 	};
-
 }
 
Index: trunk/nv/stl/limits.hh
===================================================================
--- trunk/nv/stl/limits.hh	(revision 383)
+++ trunk/nv/stl/limits.hh	(revision 384)
@@ -16,4 +16,13 @@
 #include <nv/core/common.hh>
 
+#if NV_COMPILER == NV_MSVC
+#ifdef min
+#undef min
+#endif
+#ifdef max
+#undef max
+#endif
+#endif
+
 namespace nv
 {
@@ -22,35 +31,35 @@
 		static constexpr unsigned char uc_min = 0;
 		static constexpr unsigned char uc_max = 255;
-		static constexpr unsigned char uc_bit = sizeof( unsigned char ) * 8;
+		static constexpr int uc_bit = sizeof( unsigned char ) * 8;
 		static constexpr signed char sc_min = -128;
 		static constexpr signed char sc_max = 127;
-		static constexpr signed char sc_bit = sizeof( signed char ) * 8;
+		static constexpr int sc_bit = sizeof( signed char ) * 8;
 		static constexpr char c_min = ( char( 0 ) < char( -1 ) ? 0 : -128 );
 		static constexpr char c_max = ( char( 0 ) < char( -1 ) ? 255 : 127 );
-		static constexpr char c_bit = sizeof( char ) * 8;
+		static constexpr int c_bit = sizeof( char ) * 8;
 		static constexpr unsigned short us_min = 0;
 		static constexpr unsigned short us_max = 65535;
-		static constexpr unsigned short us_bit = sizeof( unsigned short ) * 8;
+		static constexpr int us_bit = sizeof( unsigned short ) * 8;
 		static constexpr signed short ss_min = -32768;
 		static constexpr signed short ss_max = 32767;
-		static constexpr signed short ss_bit = sizeof( signed short ) * 8;
-		static constexpr unsigned int ui_min = 0;
-		static constexpr unsigned int ui_max = 4294967295;
-		static constexpr unsigned int ui_bit = sizeof( unsigned int ) * 8;
-		static constexpr signed int si_min = -2147483648;
+		static constexpr int ss_bit = sizeof( signed short ) * 8;
+		static constexpr unsigned int ui_min = 0UL;
+		static constexpr unsigned int ui_max = 4294967295UL;
+		static constexpr int ui_bit = sizeof( unsigned int ) * 8;
+		static constexpr signed int si_min = ( -2147483647 - 1 );
 		static constexpr signed int si_max = 2147483647;
-		static constexpr signed int si_bit = sizeof( signed int ) * 8;
-		static constexpr unsigned long ul_min = 0;
-		static constexpr unsigned long ul_max = 4294967295;
-		static constexpr unsigned long ul_bit = sizeof( unsigned long ) * 8;
-		static constexpr signed long sl_min = -2147483648;
-		static constexpr signed long sl_max = 2147483647;
-		static constexpr signed long sl_bit = sizeof( signed long ) * 8;
-		static constexpr unsigned long long ull_min = 0;
-		static constexpr unsigned long long ull_max = 18446744073709551615;
-		static constexpr unsigned long long ull_bit = sizeof( unsigned long long ) * 8;
-		static constexpr signed long long sll_min = -9223372036854775808;
-		static constexpr signed long long sll_max = 9223372036854775807;
-		static constexpr signed long long sll_bit = sizeof( signed long long ) * 8;
+		static constexpr int si_bit = sizeof( signed int ) * 8;
+		static constexpr unsigned long ul_min = 0UL;
+		static constexpr unsigned long ul_max = 4294967295UL;
+		static constexpr int ul_bit = sizeof( unsigned long ) * 8;
+		static constexpr signed long sl_min = ( -2147483647L -1 );
+		static constexpr signed long sl_max = 2147483647L;
+		static constexpr int sl_bit = sizeof( signed long ) * 8;
+		static constexpr unsigned long long ull_min = 0ULL;
+		static constexpr unsigned long long ull_max = 18446744073709551615ULL;
+		static constexpr int ull_bit = sizeof( unsigned long long ) * 8;
+		static constexpr signed long long sll_min = ( -9223372036854775807LL - 1 );
+		static constexpr signed long long sll_max = 9223372036854775807LL;
+		static constexpr int sll_bit = sizeof( signed long long ) * 8;
 
 		static constexpr int f_dig        = 6;
Index: trunk/nv/stl/rtti_support.hh
===================================================================
--- trunk/nv/stl/rtti_support.hh	(revision 383)
+++ trunk/nv/stl/rtti_support.hh	(revision 384)
@@ -61,17 +61,4 @@
  	}
 
-	// run-time hash
-	inline uint64 rtti_hash( const char* str )
-	{
-		uint64 hash = detail::rtti_hash_basis;
-		while ( *str != 0 )
-		{
-			hash ^= (uint64)str[0];
-			hash *= detail::rtti_hash_prime;
-			++str;
-		}
-		return hash;
-	}
-
 	template < typename T >
 	struct rtti_type_hash
