Hi, Right now I'm trying to overload the [] twice, however after compilation is done only one of the overloads will actually exist at runtime: template< unsigned int t_number > struct foo { t_type data[10]; t_type& operator[] ( unsigned int index ) { return data[index]; } }; In the structure above, I have only shown 1 array index operator just as an example. I want to define two overloads with the following conditions: 1) If t_number is equal to 1, enable_if will allow the first overload for the array operator. 2) If t_number is greater than 1, enable_if will allow the second overload for the array operator. Is there some sort of is_less_than or is_equal objects in boost I can use with enable_if for my operator overloads? Thanks.