If you render using vertex arrays, you might want to bind a buffer as an ARRAY_BUFFER regardless of how it was defined, so another bind that overrides the original m_target could be helpful. Probably like this, because you cannot BindBufferBase to an ARRAY_BUFFER (see current bindAs)
inline void BufferObject::bindAs(GLenum target) const {
glBindBuffer(target, m_name);
}