Size: a a a

2021 March 15

BU

Boris Usievich in pro.cxx
мыши
А откуда компилятор узнает, где кончается первая строка, чтобы выкинуть остальные?
у него есть тип, где прописаны размерности массива. и clang таки на это ругается в случае constexpr
источник

SS

Sergey Skvortsov in pro.cxx
Андрей Руссков
значит по стандарту double* можно приводить к A* )
Нет, pointer interconvertible это свойство конкретных объектов, а не типов
источник

АР

Андрей Руссков... in pro.cxx
Vlad Serebrennikov
проблема в том, что разные объекты double не pointer-interconvertible
а это где такое?
источник

АР

Андрей Руссков... in pro.cxx
а, погоди. double то реинтерпреткастится в double согласно другому правилу. Мы то хотим знать корректность reinterpret_cast'а, верно?
источник

АР

Андрей Руссков... in pro.cxx
а не конкретно pointer interconvertibility
источник

VS

Vlad Serebrennikov in pro.cxx
Андрей Руссков
а не конкретно pointer interconvertibility
нет, мы хотим именно это, потому что именно транзитивность этого отношения позволит привести A* к B*
источник

АР

Андрей Руссков... in pro.cxx
как я уже сказал, транзитивность этого отнощения в стандарте не оговорена
источник

VS

Vlad Serebrennikov in pro.cxx
Андрей Руссков
как я уже сказал, транзитивность этого отнощения в стандарте не оговорена
в 4.4 же, разве нет?
источник

АР

Андрей Руссков... in pro.cxx
мне кажется наш спор рассуждает note 4 из этого пункта
источник

АР

Андрей Руссков... in pro.cxx
в смысле первоначальный спор
источник

D

Dmitriy in pro.cxx
Этот код компилируется в GCC и Clang, но валится в MSVC
https://godbolt.org/z/a1M9vq

Кто из них прав?
источник

м

мыши in pro.cxx
Boris Usievich
у него есть тип, где прописаны размерности массива. и clang таки на это ругается в случае constexpr
а можно какойто пример для наглядности ?
источник

АР

Андрей Руссков... in pro.cxx
Vlad Serebrennikov
нет, мы хотим именно это, потому что именно транзитивность этого отношения позволит привести A* к B*
короче нам помимо транзитивности нужна симметричность
источник

АР

Андрей Руссков... in pro.cxx
и отношение pointer interconvertible не объявлено как симметричное
источник

АР

Андрей Руссков... in pro.cxx
то есть мы можем предполагать что A* можно привести к double* но double* к B* привести нельзя (опять же, считая отношение несимметричным по умолчанию)
источник

SS

Sergey Skvortsov in pro.cxx
Андрей Руссков
и отношение pointer interconvertible не объявлено как симметричное
Да вроде объявлено
В 4.1 / 4.3 ничего нет про порядок
источник

BU

Boris Usievich in pro.cxx
вот пример
источник

D

Dmitriy in pro.cxx
Замена
std::is_default_constructible_v<Ty1> && std::is_constructible_v<Ty2, Types...>
на
std::is_constructible_v<Ty2, Types...> && std::is_default_constructible_v<Ty1>
спасла отца русской демократии
Пойду писать репорт
источник

VS

Vlad Serebrennikov in pro.cxx
Андрей Руссков
то есть мы можем предполагать что A* можно привести к double* но double* к B* привести нельзя (опять же, считая отношение несимметричным по умолчанию)
оба случая удовлетворяют этой формулировке, мне кажется

one is a standard-layout class object and the other is the first non-static data member of that object
источник

АР

Андрей Руссков... in pro.cxx
Sergey Skvortsov
Да вроде объявлено
В 4.1 / 4.3 ничего нет про порядок
формально отношение не является симметричным по умолчанию
источник