any: as_ref() on empty returns empty

This commit is contained in:
skypjack
2026-02-12 09:18:26 +01:00
parent 0bb54130c9
commit 071febbc0c
3 changed files with 48 additions and 1 deletions

View File

@@ -484,7 +484,18 @@ public:
*/
[[nodiscard]] basic_any as_ref() noexcept {
basic_any other = std::as_const(*this).as_ref();
other.mode = (mode == any_policy::cref ? any_policy::cref : any_policy::ref);
switch(mode) {
using enum any_policy;
case cref:
case empty:
other.mode = mode;
break;
default:
other.mode = any_policy::ref;
break;
}
return other;
}