namespace Rice {

template<typename T>

inline Object Struct::Instance

operator[](T index) {

return rb_struct_aref(value(), ULONG2NUM(index));

}

template<>

inline Object Struct::Instance

operator[]<Identifier>(Identifier member) {

size_t index = type_.offset_of(member);
return (*this)[index];

}

template<>

inline Object Struct::Instance

operator[]<char const *>(char const * name) {

return (*this)[Identifier(name)];

}

} // Rice