Являются ли категории значений выражений C ++ релевантными вне C ++? - PullRequest
2 голосов
/ 25 марта 2019

Я изучаю категории значений C ++ 11 для выражений. Из моего все еще поверхностного понимания они были введены в качестве дополнительного типа / категории для выражений, чтобы распутать проблемы компиляции, которые могут возникнуть из-за возможного присутствия семантики перемещения.

Кроме того, если я правильно понял, категории значений - это не то же самое, что тип выражения, и их 5, и они имеют наследственные отношения "is-a" среди им.

На первый взгляд, все это кажется очень странным и, возможно, слишком сложным.

Мне было интересно, есть ли эта сложность:

  1. является фундаментальным и общим (и поэтому его нельзя избежать), поскольку он исходит из общей теории выражений, или
  2. если это просто причуда C ++.

Если это последнее, является ли причиной этого сложного моделирования историческая эволюция в стиле аккреции в C ++, которая ограничивает разработку языка, оставляя нетронутыми все прошлые проектные решения?

Мой интерес к этому вопросу заключается в том, что: если мы находимся в случае 1), я получу больше мотивации для знакомства со сложностями категорий ценностей, так как меня интересует понимание языков программирования в целом на фундаментальном уровне. В этом случае, не могли бы вы дать мне представление о том, как эта теория используется или используется при разработке какого-либо другого языка?

Если вместо этого мы находимся в случае 2), было бы все еще очень интересно продолжить изучение темы и искать лучшие, более простые и чистые модели для выражений и типов / категорий для них. Кроме того, в этом случае, какой-либо проблеск того, как другие языки обрабатывают эти вещи?

...