For example:
std::vector<int* absl_nonnull> x;
MyArray<int* absl_nonnull> arr;
For builtin types like int it might be clear that the * is meant to be a pointer. For user-defined types, it might be less clear?
MyFixedArray<MyType* absl_nonnull, MySize * MyCount> fixed_arr;