EEPROM.put an array - one element or entire array?

    template< typename T > const T &put( int idx, const T &t ){
        EEPtr e = idx;
        const uint8_t *ptr = (const uint8_t*) &t; 
        for( int count = sizeof(T) ; count ; --count, ++e )  (*e).update( *ptr++ );
        return t;
    }  

The put() function in the EEPROM library uses update() instead of write(), so it does a read first, then only writes to EEPROM if the value has changed.