Использование auto везде превращает код в нечитаемый. Суть auto - упростить, а не усложнить чтение кода (например нужен в итераторах). Код чаще читается, чем пишется
На данный момент (версия 17.1.0 Preview 1.1) IntelliSense все еще не работает с модулями C++20. Ну в тестовом примерчике с одним модулем может и справится, но когда их больше и зависимости между ними сложнее, IntelliSense подвисает на каждый чих и в итоге отказывается выдавать любую подсказку. В итоге работа в IDE ничем не отличается от работы в блокноте
Тут можно найти ещё одно применение безымянным namespace.
Нынче нужно писать expot { ... }
С расширениями файлов для модулей вообще непонятка. Тут https://en.cppreference.com/w/cpp/language/modules из примеров чётко видно, что модули можно сохранять в cpp-файлах. Но если так сделать, то VS выдаёт ошибку "Error C3378 a declaration can be exported only from a module interface unit". VS поддерживает расширения cppm и ixx, clang вроде бы только cppm (не проверял), CMake версии 3.21 уже распознаёт cppm и ixx файлы как C++. Т.е. для module interface unit оптимально сейчас использовать расширение cppm. Но как дела обстоять с GCC?
Это обосновывает процесс установки. При разработке изолированной библиотеки не будешь же каждый раз при отладке ставить заголовки, поэтому обращение обязательно через "". А чтобы другие либы/приложение могли использовать эту либу, ее надо ставить, и тогда они подключают заголовки через <>.
Да я видел уже. Там тоже есть вопросы. Если уж оформлять mylib как отдельную библиотеку, то очевидно ее .h и .cpp должны быть отделены от общей мешанины, а в .cpp должно быть обращение к своим заголовочным файлам как #include "", как это во всех библиотеках сделано. И только когда заголовки проинсталлятся, другие библиотеки/приложения будут обращаться к этим заголовкам через #include <>.
Ну допустим у меня архивчик с модулем, который я хочу добавить в общую массу, мне загонять его в репозиторий придется, что cmake его по общей схеме опять вытянул?
Использование auto везде превращает код в нечитаемый. Суть auto - упростить, а не усложнить чтение кода (например нужен в итераторах). Код чаще читается, чем пишется
Даже на винде лучше bash использовать, чем связываться с очередным "инновационным творением" микрософта. Если у вас установлен git, то и баш уже есть
Можно ли небольшое пояснение, почему он так хорош для разработки игр?
Любой аспект, о котором я могу задуматься, говорит о том, что раст хуже C++ для разработки игр.
В модулях C++20 все функции полностью определены вунтри классов и inline в модулях нужно писать явно
VS поддерживает, но огромная проблема c IntelliSense
На данный момент (версия 17.1.0 Preview 1.1) IntelliSense все еще не работает с модулями C++20. Ну в тестовом примерчике с одним модулем может и справится, но когда их больше и зависимости между ними сложнее, IntelliSense подвисает на каждый чих и в итоге отказывается выдавать любую подсказку. В итоге работа в IDE ничем не отличается от работы в блокноте
согласен
а ну да
Class1.h
Class2.h
Main.cpp
Т.е. заголовки могут подключать друг друга, кто первый подключил, тот и молодец. А модули так не могут
Я так понял он про случай, когда есть 2 класса и в каждом из них есть поле с типом другого класса
Судя по этому https://gcc.gnu.org/wiki/cxx-modules в GCC расширение не имеет значения
А для module implementation unit походу работает только расширение cpp (в VS). Только в нем "module имя_модуля;" не вызывает ошибку.
Нынче нужно писать expot { ... }
С расширениями файлов для модулей вообще непонятка. Тут https://en.cppreference.com/w/cpp/language/modules из примеров чётко видно, что модули можно сохранять в cpp-файлах. Но если так сделать, то VS выдаёт ошибку "Error C3378 a declaration can be exported only from a module interface unit". VS поддерживает расширения cppm и ixx, clang вроде бы только cppm (не проверял), CMake версии 3.21 уже распознаёт cppm и ixx файлы как C++. Т.е. для module interface unit оптимально сейчас использовать расширение cppm. Но как дела обстоять с GCC?
Это обосновывает процесс установки. При разработке изолированной библиотеки не будешь же каждый раз при отладке ставить заголовки, поэтому обращение обязательно через
""
. А чтобы другие либы/приложение могли использовать эту либу, ее надо ставить, и тогда они подключают заголовки через<>
.Нет. В директории include к другим заголовкам из той же библиотеки тоже нужно обращаться через "".
Да я видел уже. Там тоже есть вопросы. Если уж оформлять mylib как отдельную библиотеку, то очевидно ее .h и .cpp должны быть отделены от общей мешанины, а в .cpp должно быть обращение к своим заголовочным файлам как
#include ""
, как это во всех библиотеках сделано. И только когда заголовки проинсталлятся, другие библиотеки/приложения будут обращаться к этим заголовкам через#include <>
.модули могут быть из разных источников и под разные версии движка