Расскажу об одном решении которое имеет больше смысла в качестве упражнения а не практической пользы. Постановка задачи звучит так: Хочу получить в C++ семантику property как в C# и без накладных расходов.
В начале будет результат к которому я пришел, затем пояснения и выводы.
К слову, компиляторы Microsoft имеют способ описать property но это не является частью стандарта C++.
Сразу отмечу что property получились с значительными ограничениями и больше подходят для имитации Swizzling из GLSL. По этому буду воспроизводить маленький кусочек vec2
а именно property yx
которое должно возвращать исходный вектор с свапнутыми полями. Далее vec2
буду иногда называть контейнером, как более общий случай. Когда упоминаю property, буду подразумевать поле внутри контейнера, то есть yx
в конкретном примере. Использую стандарт С++11
Желаемое поведение: