Я изучаю категории значений C ++ 11 для выражений. Из моего все еще поверхностного понимания они были введены в качестве дополнительного типа / категории для выражений, чтобы распутать проблемы компиляции, которые могут возникнуть из-за возможного присутствия семантики перемещения.
Кроме того, если я правильно понял, категории значений - это не то же самое, что тип выражения, и их 5, и они имеют наследственные отношения "is-a" среди им.
На первый взгляд, все это кажется очень странным и, возможно, слишком сложным.
Мне было интересно, есть ли эта сложность:
- является фундаментальным и общим (и поэтому его нельзя избежать), поскольку он исходит из общей теории выражений, или
- если это просто причуда C ++.
Если это последнее, является ли причиной этого сложного моделирования историческая эволюция в стиле аккреции в C ++, которая ограничивает разработку языка, оставляя нетронутыми все прошлые проектные решения?
Мой интерес к этому вопросу заключается в том, что: если мы находимся в случае 1), я получу больше мотивации для знакомства со сложностями категорий ценностей, так как меня интересует понимание языков программирования в целом на фундаментальном уровне. В этом случае, не могли бы вы дать мне представление о том, как эта теория используется или используется при разработке какого-либо другого языка?
Если вместо этого мы находимся в случае 2), было бы все еще очень интересно продолжить изучение темы и искать лучшие, более простые и чистые модели для выражений и типов / категорий для них. Кроме того, в этом случае, какой-либо проблеск того, как другие языки обрабатывают эти вещи?