Прежде всего, если вы действительно хотите изучить формализмы / детали C ++, вы должны обратиться к стандартам (или их проектам);вместо вики-страниц (которые могут быть или не быть правильными; хотя cppreference, как правило, довольно хорошо).См. Где найти текущие стандартные документы C или C ++? .
Сказав это, нет необходимости изучать стандарт (ы) C ++ для использования языка.На самом деле, большинство разработчиков этого не делают, и наверняка они не предназначены для изучения C ++.Это официальный документ, а не учебный / учебный материал.Так что, если вы только изучаете C ++, купите хорошую книгу об этом.См. Подробное руководство и список книг C ++ .
Что означает, что выражение имеет тип?Это тип конечного результата после оценки?
Нет, его не нужно оценивать (т. Е. Во время выполнения), чтобы иметь тип.Например, sizeof expr
имеет тип std::size_t
, но expr
не оценивается.
Я не хочу изучать шаблон на текущем этапе, будет ли это мешать изучению основной части (с точки зрения эксперта)?Мне потребовалось некоторое время, чтобы осознать, что ссылка на пересылку и ссылка на rvalue - это разные вещи, что и для шаблона.
На самом деле, все наоборот, если вы хотите изучить C ++ для практического применения.использует, вам определенно нужно изучить хотя бы основы шаблонов (если только использовать стандартную библиотеку и не быть полностью потерянным).
Однако, вам не нужно формально знать все о том, как ониработать с типами значений, ссылочными ссылками или самими шаблонами, чтобы иметь возможность программировать.
фраза меня очень беспокоит: identity
Существуетнет определения для «идентичности» в стандарте.В C ++ 17 он используется в нескольких местах, например, при определении glvalue:
- A glvalue - это выражение, оценка которого определяет идентичность объекта, бит-field или function.
Но, действительно, вы могли бы сказать, что «наличие идентичности» означает «фактически существующее где-то в памяти (если требуется)».Лучшее, что вы можете сделать, чтобы понять эту терминологию, это прочитать то, что написал Страуструп :
«имеет идентичность» - т.е. и адрес, указатель, пользователь может определить, являются ли две копииидентичные и т. д.
Вы также можете думать об этом противоположным образом: glvalue (то, что имеет идентичность) - это любое выражение, которое не является prvalue, если это помогает.