изменение типа в ссылку на тип, позволяет получить доступ к членам типа без создания экземпляра типа. Это, по-видимому, верно как для ссылок lvalue, так и для ссылок rvalue.
declval реализуется с помощью add_rvalue_reference
вместо add_lvalue_reference
, это просто соглашение или есть примеры использования, где add_rvalue_reference
является предпочтительным?
Изменить:
Полагаю, я был немного расплывчатым, эти ответы очень хороши, но касаются немного разных точек. Предлагаются два разных варианта использования, Говард подчеркнул, что вы можете выбрать, какую ссылку использовать ваш тип, делая add_rvalue_reference
более гибким. В других ответах подчеркивается, что поведение по умолчанию автоматически выбирает ссылки, которые более естественно отражают введенный тип. Я не знаю, что выбрать! Если кто-то может добавить два простых примера, мотивируя потребность в каждом свойстве соответственно, тогда я буду удовлетворен.