Add readonly/const models for collection concepts #130
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Resolves issue #78 by introducing readonly models for each collection concept that preserve const qualifiers instead of stripping them with
std::remove_const_t.Key Changes
CReadonlyDictionaryHelpFunctionthat usesconst Selfinstead ofstd::remove_const_t<TRawSelf>CReadonlyListHelpFunctionwith const-only operationsCReadonlySetHelpFunctionwith const-only operationsProblem Solved
The original issue was that all collection concepts used
std::remove_const_t<TRawSelf>which stripped away const qualifiers, making it impossible to define readonly models that only use const methods. This was described as a "small hack" that excluded readonly collections.Solution
Instead of always removing the const qualifier, the new readonly concepts preserve it by using
TRawSelfdirectly, ensuring that only const methods are required and available.Test Plan
g++ -std=c++20🤖 Generated with Claude Code
Resolves #78