WG21-P1301 [[nodiscard("message")]] has been implemented for VS 2019 16.5 and has also been implemented by Clang 9.
We should consider using this in the STL. We have a few criteria for marking functions as [[nodiscard]]: pure observer (most common), resource leak, incorrect behavior (e.g. remove_if()). We could have macros for each of these reasons.