Aidar
лови в копилку: string_view v = some_str_func();
я не думаю что в супапро string_view не взорвет мозг
Constantine
нельзя проблокать
Anatoly
лови в копилку: string_view v = some_str_func();
ты инициализируешь view временным объектом?
Constantine
в частности, нельзя проблокать auto & x = f(); если f вернет const
Igor
ты инициализируешь view временным объектом?
как и Айдар же инициализирует const char* c_str'ом от временного стринга
Constantine
const&& f() { } auto & x = f(); //всегда ОК
Aidar
const && не имеет смысла же
Anatoly
как и Айдар же инициализирует const char* c_str'ом от временного стринга
и то и то одинаково неверно, так в чем же "копилка"?
Aidar
или имеет?
Igor
угу(
Constantine
const && не имеет смысла же
должен иметь тот, который сейчас имеет const&& "мне плевать что там, мне только спросить"
Igor
и то и то одинаково неверно, так в чем же "копилка"?
копилка выстрелов в ногу, которые нельзя запретить, потому что поломаются вполне валидные юзкейсы вроде твоего
Aidar
к сожалению, const& как раз НЕ КОНВЕРТИРУЕТСЯ в const&&
думаю надо просто проблочить const&&
Aidar
для чего это ваще? для const_castов?
Constantine
думаю надо просто проблочить const&&
в принципе все будет офигенно, если сейчас в плюсах заявить, что const temporary это const&, а const reference это const&& :)
Constantine
и std::move для const сделать && -> &
Anatoly
где вы const вытащили?
Constantine
короче для const сейчас & и && ровно наоборот
Anatoly
(std::string("hello") + name) никакой не const
Anatoliy
какое воинственное невежество здесь развелось! а как вы смотрите на abominable function types? тоже надо выжечь калёным железом?
Anatoliy
короче для const сейчас & и && ровно наоборот
чувак. очередной раз тебе говорю. ты явно что-то не догоняешь самым конкретным образом
Anatoliy
неужели ты думаешь ты умнее теоретиков C++? целых рабочих групп Комитета
Constantine
чувак. очередной раз тебе говорю. ты явно что-то не догоняешь самым конкретным образом
чувак, скажи мне, почему implicit cast из T&& в T& является проверкой is_const<T>?
Igor
я было подумал ты предлагаешь это как обход выстрела в ногу
единственный обход который я вижу - в стринге хранить shared_ptr на данные, и увеличивать его счётчик на всяких string_view и c_str думаю, уже с первых строк видна вся глубина глупости этого решения
Constantine
это объясняет все
Anatoliy
я не вижу никаких противоречий в системе типов в тех аспектах которые ты здесь упоминал
Constantine
а я вижу
Constantine
что T&& может быть implicit casted в T& в случае если is_const<T>
Anatoliy
чувак, скажи мне, почему implicit cast из T&& в T& является проверкой is_const<T>?
я понимаю каждое слово в отдельности, понимаю некоторые их сочетания, но всё предложение враз я не могу вразуметь своим трезвым разумом
Aidar
достаточно 2 типа для view
Aidar
с хранением и без
Aidar
что здесь не так?
нельзя запретить вызов константной штуки для временного объекта
Anatoliy
ты не видел немодифицируемых временных объектов? struct A {}; const A f() { return {}; } - здесь функция f() возвращает немодифицируемый временный объект
Aidar
давай сделай
Alexander
временный обьект сбиндится к const T&
Aidar
давно пора бы иметь 2 типа ссылок: с автокастом к родителю и без
Anatoliy
давай сделай
template< typename T > void f(T &&) {} и template< typename T > void f(const T &&) = delete;
Anatoliy
вот использование: https://github.com/tomilov/quickhull/blob/master/include/quickhull.hpp#L74
Anatoliy
я вызову для const foo& чо будет?
вызовется первая версия, конечно
Anatoliy
ребята, у вас пробелы в знаниях. не надо Комитет ругать
Constantine
что здесь не так?
мне кажется, или reference to temporary нельзя конвертировать в reference? :)
Constantine
ну вот серьезно, я сегодня утром пишу новый язык и называю его SUPAC++
Constantine
и я разрешу конвертировать
Constantine
const&& в const& ?
Aidar
ребята, у вас пробелы в знаниях. не надо Комитет ругать
у тебя там не то же самое что ты скинул
Anatoliy
Aidar
то что ты скинул да верно и delete может и спасет
Constantine
ну т.е. временный const объект замечательно подходит на роль не-временного const объекта
Constantine
больше вопросов нет
Aidar
но это только к методам относится
Anatoliy
и до расширения категорий значений
Igor
достаточно 2 типа для view
Во-первых "вью с хранением" звучит очень подозрительно, во-вторых это не решает проблему челиков из супапро
Constantine
как и всегда было
ну вот серьезно, я сегодня утром пишу новый язык и называю его SUPAC++ и я разрешу конвертировать const&& в const& ?
Anatoliy
но это только к методам относится
и для свободных функций как я и написал
Aidar
и для свободных функций как я и написал
ты ваще с юниверсал референсами написал
Anatoliy
Constantine
не понял тебя. в C++ уже так. зачем новый тебе язык?
затем, чтобы выяснить, что преобразование const&& в const& это просто легаси
Deleted Account
как и Айдар же инициализирует const char* c_str'ом от временного стринга
когда ужэ завезут чекалку памяти по указателю в плюсцы?
Constantine
ты ваще с юниверсал референсами написал
айдар, он временные объекты ссылками форвардит, не парься
Anatoliy
затем, чтобы выяснить, что преобразование const&& в const& это просто легаси
а ну это может быть и так, какая разница? это где-то мешает?
Anatoliy
это не легаси, кстати, а backward compatibility
Constantine
у quickhull?
да, почему-то в мане не написано
Anatoliy
ссылка на статью оригинальную дана зато