Size: a a a

cxx.Дискуссионная

2020 April 19

RM

Roy Mustang in cxx.Дискуссионная
@das_3sz3tt возвращаясь к вопросу с T&&
источник

RM

Roy Mustang in cxx.Дискуссионная
Я вроде проверил, вроде все так как я говорил или я может не так is_same_v юзаю
источник

RM

Roy Mustang in cxx.Дискуссионная
источник

IL

Ilya L in cxx.Дискуссионная
Artöm Bakri Al-Sarmini
Фраза "добавляет константность верхнего уровня" хороша для описание этого кмк
То есть можно сказать. Верхний уровень это тип указателя или ссылки, а нижний уровень это собственно тип данных для которого у нас указатель или ссылка?
источник

RM

Roy Mustang in cxx.Дискуссионная
источник

O

Ofee in cxx.Дискуссионная
Artöm Bakri Al-Sarmini
Офи осознал, Рой еще нет
Думаю, несколько лет назад, когда узнал о вот такой классный штуке
источник

RM

Roy Mustang in cxx.Дискуссионная
Я правильно в is_same_v вообще задал типы?
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Artöm Bakri Al-Sarmini
Продолжим. Для указателя это константность указателя, не указываемого типа. Для ссылки константность дефолт, конст ничего не делает (изменить константность ссылаемого типа он не может, потому что это не константность верхнего уровня)
Теперь функции. Там константность может быть в возвращаемом типе, типах аргументов и в cv квалификации. Ничего из этого не считается константностью верхнего уровня, поэтому ответ int()
источник

AE

Andrew Evseev in cxx.Дискуссионная
Указатель хранит адрес. Можно изменить адрес и указывать на другой объект, можно изменить объект по данному адресу. const слева от звездочки относится к типу объекта и запрещает менять объект, const справа от * запрещает менять адрес
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Roy Mustang
Я правильно в is_same_v вообще задал типы?
Если компилируется, значит правильно. А теперь T проверь
источник

RM

Roy Mustang in cxx.Дискуссионная
Artöm Bakri Al-Sarmini
Если компилируется, значит правильно. А теперь T проверь
Просто T?
источник

O

Ofee in cxx.Дискуссионная
Нас же T раньше интересовал, а не T&&, нет?
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Да
источник

RM

Roy Mustang in cxx.Дискуссионная
Так это разве не получается что у нас foo будет принимать (T t) ?
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Не получается
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
В ассерте поменяй, не в аргументах
источник

RM

Roy Mustang in cxx.Дискуссионная
Я понял
источник

O

Ofee in cxx.Дискуссионная
Andrew Evseev
Указатель хранит адрес. Можно изменить адрес и указывать на другой объект, можно изменить объект по данному адресу. const слева от звездочки относится к типу объекта и запрещает менять объект, const справа от * запрещает менять адрес
Не стоит так рассуждать, const всегда справа. Справа от типа. Или справа от указателя. Потому что он может стоять и посередине двух указателей
источник

RM

Roy Mustang in cxx.Дискуссионная
Andrew Evseev
Указатель хранит адрес. Можно изменить адрес и указывать на другой объект, можно изменить объект по данному адресу. const слева от звездочки относится к типу объекта и запрещает менять объект, const справа от * запрещает менять адрес
Во-во
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Andrew Evseev
Указатель хранит адрес. Можно изменить адрес и указывать на другой объект, можно изменить объект по данному адресу. const слева от звездочки относится к типу объекта и запрещает менять объект, const справа от * запрещает менять адрес
Звездочек может быть несколько
источник