auto
только усложняет чтение кода, сбивает читателя с его мысли и заставляет задаваться совсем ненужными вопросами. Поэтому лучше указывать явные типы переменных. А обобщение использовать стоит только тогда, когда указание явного типа только затрудняет понимание кода при чтении.auto
в типе результата буквально незачем. Объявление этого шаблона должно быть таким:template <typename TResult>
TResult search (std::string str);
а вообще корректно сравнивать между собой два вещественных числа?
Но если он основан на динамическом массиве, то как тогда выполняется вставка элементов?
так и чему он не равен?
в пропозале C++ написно, что он отложен до C++29.
Мне в целом фиолетово, что написано в стандарте, мой код компилирует компилятор, а не стандарт.
ОК. На этом мои полномочия -- всё.
А ещё у вас UB, когда вызываете placement new на невыровненный массив байтов
Вы можете использовать только так:
То есть размер должен быть известен на момент компиляции.
date
с типом структуры Date
. Эта глобальная переменная неявным образом инициализируется статической функцией Core::get_system_parameters
, которая использует Config::search_str
для инициализации полей переменной date
.Date
. А удобно ли тебе указывать эти же имена полей еще десятки раз там, где ты ими пользуешься? Не смущает ли тебя что эти поля везде модифицируемые, т.к. date
не константна? Не беспокоит ли тебя то, что в результате get_system_parameters();
переменная date
внезапно становится инициализированной и это вообще никак не описано в имени функции? Слово get
в префиксе функции сразу говорит о том, что функция является аксессором, в частности - геттером и возвращает инициализированное значение, но у тебя слева от get_system_parameters();
нет присвоения, тебе это странным не кажется?Date
у тебя является агрегатной и для нее доступна агрегатная инициализация.return {
Config::search_str("title"),
Config::search_bool("fullskreen"),
Config::search_bool("window_mode"),
Config::search_int("width"),
Config::search_int("height"),
Config::search_int("render_API")
};
const Date& Core::get_system_parameters() {
static const Date date{
Config::search_str("title"),
Config::search_bool("fullskreen"),
Config::search_bool("window_mode"),
Config::search_int("width"),
Config::search_int("height"),
Config::search_int("render_API")
};
return date;
}
Core::get_system_parameters()
. я не хочу по 2 раза писать одни и те же переменые в структуре объявляя их
// Определение структуры `Date`.
struct Date {
int a; // Определение поля `a` в структуре `Date`.
};
// Определение глобальной переменной `date` типа `Date`.
Date date;
// Определение глобальной процедуры `get_parametrs`.
void get_parametrs(){
// Полю `a` глобальной переменной `date` присваивается значение `5`.
date.a = 5;
}
Я - инженер, примерно столько же лет занимаюсь написанием кода игр. Я далек от арта и дизайна, поэтому не могу оценить твои навыки по приведенному изображению. Но через разговор сориентироваться могу.