Re[9]: [FYI] С++17: Генерация визитера для std::variant на л
От: _hum_ Беларусь  
Дата: 03.10.17 20:17
Оценка: -2
Здравствуйте, rg45, Вы писали:

R>Здравствуйте, _hum_, Вы писали:


__>>night beast, так а точно нельзя это воспринимать как именно что возвращаемое конструктором значение-объект? если нет, то с вашей точки зрения, какой смысл использовать для этой конструкции уже закрепленный ранее символ "->" (неужели нельзя было другой найти, наподобие "->>" или еще чего)


R>Воспринимать, конечно, можно что угодно и как угодно. Но реальность такова, что у конструкторов нет возвращаемых значений. Говоря популярным языком, конструктор — это процедура, создающая объект на выделенном участке памяти.


ммм.. это по стандарту. но никто не мешает воспринмать конструктор как функцию, инициализирующую созданный объкт, а после возвращающую ссылку на него же (как в операторе присваивания), просто программисту это возращаемое значение недоступно и не видно
[ведь должна же быть причина, по которой разработчики оставили ->, а не ввели новый символ]

R>Говоря же об упомянутой выше class template argument deduction guide, опять же популярным языком: эту фичу следует расматривать не как конструктор, а как средство, предоставляющее возможность конструирования объекта шаблонного класса без явной спецификации фактических параметров шаблона. Определение правила автоматического выведения типов парамеров не заменяет соответсвующий конструктор (не важно, сгенерированный ли компилятором или определенный пользователем), а наоборот, предполагает его существование и доступность!


ну, если попытаться на минуточку посмотреть с точки зрения того, что то было все-таки подобием декларации конструктора, то вроде все становится естественным — можно тогда считать, что компилятор просто, пользуясь имеющейся декларацией, осуществляет вывод типа шаблона через механизм наподобие deduction from a function call
Отредактировано 03.10.2017 20:21 _hum_ . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.