• Почему нельзя привести метод класса к общему указателю? А если можно то как?

    @MarkusD Куратор тега C++
    GavriKos
    множество задач можно решить онанизмом

    А с какой целью здесь используется такой прием демагогии, как апелляция к действию?
    Это безотносительно слов Adamos , которые там выше выглядели больше как сарказм и, в общем, действительно смешно.
  • Ошибка линковщика - Неопределённая ссылка на..., что делать?

    @MarkusD Куратор тега C++
    using_namespace_boring, а что ты понимаешь под словом "реализован"?
    Саша понимает под этим словом что-то свое. Ты - что-то свое. В стандарте же нет такого термина.
    Стандарт оперирует только терминами: "объявление (declaration)" и "определение (definition)".

    Между тем, слова Саши смысла особого не имеют. Стандарт требует чтобы определение шаблона было достижимо из места инстанцирования шаблона в модуле трансляции. Это все значит, что после сборки модуля трансляции, начиная с пятой стадии трансляции, определение шаблона должно находиться выше по тексту относительно места инстанцирования шаблона.
    У тебя же сейчас определение находится вообще в другом модуле трансляции, чем и нарушает стандарт.
  • Статическая линковка java с C++?

    @MarkusD Куратор тега C++
    Василий Банников, JRE позволяет создание выделенной машины внутри стороннего процесса.
    Есть даже сторонние реализации JVM для прямого встраивания и вот той самой пресловутой статической линковки.

    сергей кузьмин, JNI используется для интеракции и маршалинга типов в обе стороны.
    Понадобиться встраивание JRE и его аналогов в нативную программу может для того чтобы отделить быстро развивающуюся бизнес-логику от более сложного и уже стабильного базиса.
    В области моей работы такая потребность - это норма.
  • Как сделать словарь с кириллицей?

    @MarkusD Куратор тега C++
    AlexGenesis , коротко. Твой словарь в качестве ключа должен иметь символы в юникоде.
    И выборка из словаря должна тоже по символу юникода осуществляться.
  • Для чего нужна двойная ссылка &&?

    @MarkusD Куратор тега C++
    Владимир Коршунов
    int& m = getRef(); - тут ровно так же UB и, на самом деле, это чистая случайность что вывелась 5.
    int - это очень плохой тип для таких проверок. Измени код чтобы везде использовался std::shared_ptr<int> и посмотри что будет. Транслятор тебе даже пометил неприемлемость возврата ссылки на локальный объект.
    Продление жизни временного работает только при инициализации константных ссылок.

    Вы хотели сказать, что нельзя возвращать из функции ссылку на временный объект?

    Это - само собой разумеющееся. В коде моих примеров ведь нет возврата временных объектов по ссылке.
    Я хотел сказать что нужно правильно понимать время жизни локальных временных и продление их жизни через инициализацию константной ссылки.
    const int& c = 5; - тут локальный временный int( 5 ) продолжит жить после инициализации локальной ссылки.
    for( const auto& value : Foo{}.GetValues() ) - тут локальный временный Foo{} уничтожается еще до выборки первого элемента.
  • При множественной декларации вызов через шаблон типа?

    @MarkusD Куратор тега C++
    Вадим Ушаков , а где эта ошибка возникает? В каком коде?
    У тебя в вопросе нет того кода, который инстанцирует шаблон этой функции, по которому можно сделать вывод о совершенных тобой ошибках.
  • Где использовать const?

    @MarkusD Куратор тега C++
    MaratPetrov96, а ты и дальше будешь вот так каждую ошибку доспрашивать вместо того чтобы напрячь мозги и подумать логически? Чему ты таким образом хочешь научиться и что именно из твоих знаний твоя лабораторная отражает уже сейчас?
  • Как добавить в пространство имен нового проекта variant?

    Павел Соколов , П3.8 регламента работы сервиса.
    Любой код должен быть оформлен соответствующим образом.
    Вместо этого замыленного скриншота тебе лучше предоставить код сценариев сборки проекта. Там важны настройки проекта. Еще важно знать версию студии у тебя.
  • Для чего нужна двойная ссылка &&?

    @MarkusD Куратор тега C++
    Владимир Коршунов,
    Ещё возник вопрос, а есть ли разница между этими вариантами? В обоих случаях c имеет один и тот же адрес.

    Нет, разницы между этими двумя примерами нет никакой. Ссылка, согласно стандарту, это эфемер. У ссылки не описывается характеристик размера или выравнивания. С т.з. стандарта ссылка присутствует в коде только до момента окончания 7й стадии трансляции - стадии компиляции кода.
    На практике, все трансляторы под ссылкой понимают нечто иное и не такое эфемерное. Но суть сейчас в том, что на счет ссылки говорит стандарт.

    я прогнал у себя ваш пример и у меня отладчик в цикл даже не заходит.

    Это все потому что ты пока еще не очень хорошо ориентируешься между стандартами. В 14-м стандарте этот код может даже работать так как он написан. В 17-м поведет себя так, как я описал и это будет правильно. Если у тебя стандарт 17й и нет входа в цикл, то все тоже нормально.
    Все потому что в моем примере присутствует неопределенное поведение в следствии обращения к висячей ссылке.
    Я изначально написал что пример у тебя простой, но понимать его нужно строго правильно.

    В 17-м стандарте мой пример будет эквивалентен вот этому коду.
    int main()
    {
    	const std::vector<int>& data{ Foo{}.GetValues() };
    	auto current = data.begin();
    	auto end = data.end();
    	for( ; current != end; ++current )
    	{
    		const auto& value = *current;
    		std::cout << value << std::endl;
    	}
    }

    Теперь проблему лучше видно?
    Давай обратим внимание на std::vector<int>& data{ Foo{}.GetValues() }; и то, что я писал комментарием выше. Локальный временный уничтожается сразу после завершения операции.
    Сразу же после инициализации data становится висячей ссылкой. Следующая же строка уже вносит в код UB.
  • Почему создание временного объекта c помощью конструктора копирования оценивается как redeclaration?

    @MarkusD Куратор тега C++
    Станислав Макаров , как говорится, надо не думать, надо знать.
    Все так и есть. Одинарные скобки опускаются если выражение в скобках сохраняет семантику после раскрытия скобок.
    Поэтому, исходя из контекста выражения, Object (o1) воспринимается как определение объекта o1 с типом Object, а скобки в этом контексте являются уже деоптимизацией.
  • Для чего нужна двойная ссылка &&?

    @MarkusD Куратор тега C++
    Владимир Коршунов
    Я представляю это так: 5 находится в области памяти, записать в которую мы ничего не можем (из-за этого мы не можем написать, допустим, 5 = a), но при этом мы можем из этой области читать.

    Этот момент ты понимаешь неправильно.
    5 - это литерал с категорией prvalue. Категория выражения говорит о том, что выражение имеет полный тип и не является полиморфным, не является массивом, лишено идентичности.
    Но вот что важно! Для такого выражения невозможно получить адрес и такое выражение не может находиться в левой части операции присвоения.
    Вот почему 5 = a приводит к ошибке трансляции.

    Но что тогда происходит в выражении const int& c = 5;?
    Тут происходит инициализация константной ссылки. prvalue могут использоваться для инициализации только константной ссылки, в следствии чего создается локальный временный объект с типом эквивалентным подлежащему типу ссылки. Литерал же используется для инициализации этого локального временного. Обычно локальный временный уничтожается сразу после завершения операции. Однако здесь вступает в силу продление жизни временного за счет именно инициализации константной ссылки.

    Код очень простой, но понимать его нужно только правильно. Иное понимание такого простого кода обычно приводит к неуловимым ошибкам и большим проблемам отладки.
    Вот достаточно простой пример такой ошибки. Код работает не так, как написан.
  • Какие инструменты нужны для разработки игр?

    Борис Животное, пожалуй есть такие видео. Просто все, что мне залетает в подборку, с тем же свистом из подборки улетает в баню потому что там со старта видно что автор это делает только ради рекламы.
    А целенаправленно я подобные материалы не искал. Люди вроде Cherno, с одной стороны, делают не обучающие, а больше обзорные видео. С другой стороны, их уровень видно и без их видео. Cherno ко мне в подписки пришел потому что я какое-то время занимался вычитыванием Hazel - его петпроекта.
    Клево будет если поделишься ссылками на достойные с твоей точки зрения каналы с достойными видео по обсуждаемому вопросу.
  • Какие инструменты нужны для разработки игр?

    freeExec, ни чуть. Это все один проект. Продакшен там разный, это верно.
    Тут, признаюсь, я больше снобизмом занимаюсь. Потому что под "проектом" или "игрой" в этих комментариях можно понимать разное. И, я так думаю, мы с тобой разное и понимаем.
    В конечном итоге, разные это проекты, один ли это продукт, или вовсе нет, ситуации такие бывают и по сей день. Инженерам одного инструмента в работе может не хватать.

    А еще есть Atomic Heart, который строят испокон веков и уже гору движков, концепций и подходов поменяли потому что захотелось. :)
  • Какие инструменты нужны для разработки игр?

    freeExec, в этом и суть. Одного движка для этой задачи не достаточно. И использовать пришлось уже несколько.

    Третьим, и самым упоротым, примером будут ремастеры. Рядовая практика для таких проектов - это максимально раздеть прошлый двиг проекта и, аки сову на глобус, натянуть оставшееся на новый. Со всеми вытекающими проблемами и казусами после релиза.
  • Какие инструменты нужны для разработки игр?

    freeExec, легкий пример. Игра создавалась под ПК, получила там большой успех, после чего встала задача портирования на консоли и мобильные устройства. На сыча того же.
    Основной движок игры не располагает к портированию вообще. В следствии этого команда портирования принимает решение использовать другой инструмент, на который затягивают игровую логику основного продукта.

    Пример посложнее. Большинство мобильных игр раннего периода имели две полностью разных кодовых базы под андроид и йось. Таким же образом разработчики поступали и с играми под Java, Symbian, WinMO, BADA и прочие ранние мобильные ОС.
  • Как найти длинный путь между двумя точками?

    aygumov, ты, главное, не торопись ярлычки раздавать. Тостер пестрит халявщиками и неучами, у них всех примерно схожий стиль построения вопроса. Стиль примерно схожий с твоим в этом твоем вопросе.
    Изначально по твоему поводу не было особых подозрений, кроме стандартного нарушения правил в виду твоего незнания этих правил. Но сейчас твой профиль общения стал полностью вписываться в характеристику условного халявщика.
    Качество, подача и тон ответов, а так же комментариев и уточнений, во многом зависят от качества, подачи и тона вопроса. Вот этот момент нужно очень хорошо понимать.
    Нарушая принятые в обществе правила, ты бросаешь обществу вызов - т.е. ведешь себя вызывающе. И если твой вызов принимают, а тебе это не нравится, то это уже твоя сугубо личная проблема.
  • Как найти длинный путь между двумя точками?

    Алан Гибизов, автор очень торопится чтобы пытаться самостоятельно решить свой вопрос :)
    Но, в целом, это задание и есть.
  • Как работает сохранение в Skyrim?

    WasTabon, TES Construction Set. Набор инструментов для управления ресурсами TES каждой конкретной версии.
    Собственно, для скайрима тоже есть свой набор инструментов.
    Поэтому у тебя и возникают такие вопросы, что ты не посмотрел даже в папку с игрой и не почитал лежащие там документы.
    Механики работы ресурсов TES и самого Construction Set очень хорошо изучены и описаны сообществом моддеров. Тебе достаточно просто прочитать уже описанное.
    Там описано, в частности, что еще со времен Морроуинда сохранение представляет из себя патч основной базы данных мира игры. В этот патч вносятся все действия игрока. Этот патч вносит изменения во все, чего игрок касается и меняет.
    У этого патча есть зависимость от списка ресурсов основной базы, которые патч затрагивает. Поэтому сохранения привязываются к установленным модам.
    Сохранение можно открыть в TESCS и посмотреть его наполнение. Но для этого с сохранением нужно немного поколдовать, потому что формат его заголовка отличается от формата основной БД мира, с которой CS и работает.