Abseil has "portable" (ifdefed around clang) attributes for annotating: * [ABSL_ATTRIBUTE_VIEW](https://github.com/abseil/abseil-cpp/blob/f7c22f52a748761b93c50a27b06afef000b26f95/absl/base/attributes.h#L857) that something is a view (e.g., `array_ref`) * [ABSL_ATTRIBUTE_OWNER](https://github.com/abseil/abseil-cpp/blob/f7c22f52a748761b93c50a27b06afef000b26f95/absl/base/attributes.h#L888) that something is owns all the data (e.g., `array`) * [ABSL_ATTRIBUTE_LIFETIME_BOUND](https://github.com/abseil/abseil-cpp/blob/f7c22f52a748761b93c50a27b06afef000b26f95/absl/base/attributes.h#L822) that a parameter passed into a free or member function needs to outlive the function. Any objection to adding these in guarded behind some ifdefs of our own?