Информация об изменениях

Сообщение Re[9]: [FYI] С++17: Генерация визитера для std::variant на л от 03.10.2017 20:17

Изменено 03.10.2017 20:21 _hum_

Re[9]: [FYI] С++17: Генерация визитера для std::variant на л
Здравствуйте, rg45, Вы писали:

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


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


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


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

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


ну, если попытаться на минуточку посмотреть с точки зрения того, что то было все-таки подобием декларации конструктора, то вроде все становится естественным — можно тогда считать, что компилятор просто, пользуясь имеющейся декларацией, осуществляет вывод типа шаблона через механизм наподобие deduction from a function call
Re[9]: [FYI] С++17: Генерация визитера для std::variant на л
Здравствуйте, rg45, Вы писали:

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


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


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


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

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


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