Anatoly
ладно, дважды обсуждать одно и то же не могу
Anatoly
за сим вас и оставлю
Anatoly
Мы наоборот тегировали типы, чтобы можно было гарантированно сваливаться в compile time-е при изменении сигнатуры серверного метода
Ivan
Типа того
Ivan
Типа того
Чтобы выглядело как вызов функции, но это структура
Ivan
Уже есть 3 варианта)
Ivan
Просто, я люблю упороться
Anatoly
Просто, я люблю упороться
вот там мы у себя упарывались, борясь за порядок следования однотипных аргументов template<size_t TAG> struct Part { std::string value; }; enum PARTS { NAME, SURNAME, PATRONYMIC, }; struct FullName { std::string name; std::string patronymic; std::string surname; FullName(Part<NAME>&& name, Part<PATRONYMIC>&& patronymic, Part<SURNAME>&& surname) : name(std::move(name.value)), patronymic(std::move(patronymic.value)), surname(std::move(surname.value)) { } FullName(Part<SURNAME>&& surname, Part<NAME>&& name, Part<PATRONYMIC>&& patronymic) : name(std::move(name.value)), patronymic(std::move(patronymic.value)), surname(std::move(surname.value)) { } }; int main() { FullName fn1{ Part<NAME>{"Ivan"}, Part<PATRONYMIC>{}, Part<SURNAME> {"Ivanov"} }; FullName fn2{ Part<SURNAME> {"Ivanov"}, Part<NAME>{"Ivan"}, Part<PATRONYMIC>{} }; } здесь нет оверхеда, но сущностей дохера, благо, что у нас это генеренный код. Но лучше сделать builder, на мой взгляд
🦥Alex Fails
ееее, ФИО/ИФО/ИОФ
🦥Alex Fails
билдер лучше, да
Anatoly
нет-нет
Anatoly
здесь тольк ФИО и ИОФ
🦥Alex Fails
ага, я уже чуть позже заметил, что ифо нету, когда отправил, по инерции подумал, что есть)
Vitaliy ◀️TriΔng3l▶️
Vitaliy ◀️TriΔng3l▶️
Для идентификации важна в первую очередь фамилия, для общения - имя
Vitaliy ◀️TriΔng3l▶️
А отчество можно и = ""
Anatoly
а почему так сложно? чем не подходит вариант с дружественными функциями, который я привел выше?
вопрос был как инициализировать любое поле структуры в произвольном порядке без оверхеда на вызов конструктора по умолчанию + вызов конструктора копирования или перемещения.
Anatoly
мы же тегирование применяли у себя, чтобы отследить изменения в метамодели, описывающаей сигнатуру серверного вызова: <method name="app_USR_self_get"> <param name="arg1" type="u_ID"/> <param name="arg2" type="u_CODE"/> </method>
Anatoly
как отследить, что сигнатура серверного вызова изменилась, если u_ID и u_CODE имеют одинаковый тип?
Anatoly
вот об этом я писал выше - порядок следования инициализаторов должен совпадать с порядком их объявления. возможно, это изменят до принятия C++20, но предварительно это сейчас запрещено
Ivan
https://wandbox.org/permlink/haiBVVjDo22XGUVi почти
🐙 Antony
Причина в том, что большинство имплементаций стандартной библиотеки используют свои имена для параметров функций. В итоге, если принять в таком виде - придётся разработчиками стандартных библиотек сурово переписывать кучу кода. Еще причина в том, что в стандарте С++ нет согласования о наименовании параметров функций. Поэтому где-то int x, где-то int val, где-то int other, где-то вообще какой-то бред :) Так что получается некрасиво. Еще причина в том, что многие разрабточики не хотят следать за консистентностью имён переменных. Если принять в том виде, что предлагают, тогда замена void foo(int x) на void foo(int y) поломает пользовательский код. В итоге - это очень сильно усложнит разработку и поддержку библиотек.
Mikhail
вот об этом я писал выше - порядок следования инициализаторов должен совпадать с порядком их объявления. возможно, это изменят до принятия C++20, но предварительно это сейчас запрещено
оно и понятно. однако если знаешь что у тебя ничего не сломается, можешь в каком угодно порядке вызывать (ну варнинг выдаст как максимум). https://wandbox.org/permlink/KzJfRGewEf4yyyq6
Mikhail
просто перебором вариантов конструкторов не очень элегантно решить задачу
Anatoly
то что вы заложились на расширение GCC не означает, что это будет компилироватся в будущем
Ivan
Сlang
Anatoly
Ребят, поймите меня правильно, работает у вас - я безмерно рад, только на столько это будет соответствовать стандарту я хз
Ivan
Да расслабься)
Ivan
Так никто писать не будет
Ivan
Я надеюсь
Anatoly
Да я не напрягаюсь
Mikhail
Всем привет! В шаблонном методе можно как то проверить, является ли тип строкой?
Anonymous
Ребят
Anonymous
Игровой движок можно написать на с++ и луа?
Evgenii
можно
Evgenii
следующий
Anonymous
Спасибо
Anonymous
Мануалов ни у кого нет? В гугла бан.
Anonymous
Гугле*
Anatoly
Мануалов как писать движок?
Anonymous
Или gamedev каналов
Крылатый
Што...
Крылатый
Или gamedev каналов
Проследуйте сюда http://gamedev.ru/
Anonymous
Спасибо, исчезаю в небытие
Anatoly
Или gamedev каналов
Обычно, прежде чем писать, оценивают почему те или иные движки не подходят
Anonymous
Я понимаю, времени нет объяснять
Anonymous
Спасибо, что уделили мне свое
Anonymous
Это старая тема — писать движки.
Почему? Проще использовать готовые?
Крылатый
Давай не здесь?
Крылатый
Тут конфа про C++.
Anonymous
Понял
Александр
Mikhail
Ага, спасибо
Ivan
Запили код
Mikhail
то что вы заложились на расширение GCC не означает, что это будет компилироватся в будущем
а это все работает прекрасно на std=c++11 я забыл флаг поменять.. вот пример https://wandbox.org/permlink/4BUydXVLs1qXGqwr
Anatoly
а это все работает прекрасно на std=c++11 я забыл флаг поменять.. вот пример https://wandbox.org/permlink/4BUydXVLs1qXGqwr
Похоже русский у нас несколько отличается. Я тебе про фому, а ты мне про ерему.
rostislav
а опенсорс движки игровые на си++ есь?
Крылатый
Полно.
rostislav
хотя наверное ковыряние кода мало поможет
rostislav
а точно
rostislav
тут даже вроде кто-то собирал его
rostislav
под линукс
Andrei
использовать shared_ptr
Учишь людей плохому.
Vitaliy ◀️TriΔng3l▶️
Вручную подсчитывать ссылки?
Anatoly
Вручную подсчитывать ссылки?
создать объекты в хипе и никогда не удалять :)
Anatoly
Danylo
а опенсорс движки игровые на си++ есь?
OGRE, но это чисто для рендеринга
Danylo
а опенсорс движки игровые на си++ есь?
Irrlicht, но я его никогда не смотрел
Mikhail
Похоже русский у нас несколько отличается. Я тебе про фому, а ты мне про ерему.
видимо действительно отличается.. насколько я понял изначально задача была следующей: инициализация параметров структуры в произовольном порядке их следования. но по умолчанию такая возможность уже реализована в любом компиляторе (максимум выкинет варнинг, о чем я и сказал) ты привел пример кода, в котором ты решил эту задачи созданием кучи конструкторов для разного порядка следования аргуметов. я отметил что это решение не элегантное (потому что нужно реализовать n! конструкторов - где n - количество параметров структуры) или я в чем то ошибся?
Anatoly
что проверить?
Anatoly
Что clang, gcc используются C99 расширение для designed инициализации?