m = {1, 2, 3, 4, 5};
Vector& operator=(const init_l<T>& l)
, то в него будет передано размещение именно локального временного, правда с пометкой иммутабильности.Vector& operator=(const init_l<T> l)
, то локальный временный будет использован для инициализации аргумента оператора, с которым тело оператора и продолжит работать дальше._NODISCARD auto operator[](const size_t pos) const
- это не просто перегрузка оператора. Это обобщение перегрузки оператора. А обобщения в языке работают очень близко к шаблонам. У них упрощенная механика, сродни обобщениям в Яве или Шарпе. Это надо читать как семейство семантически близких функций.name
и есть варианты, которая name
тут имеется в виду - то предполагать один из вариантов, даже со стопроцентной уверенностью, не стоит.MyStruct::name = name;
из примера автора. И это является качественным примером, т.к. переключение между UNL и QNL является одним из приемов качественного кода. Не в случае кода у автора, но в огромном наборе других случаев. struct Test {
int val = false;
const int& get_val(bool good, const int& default_value) const
{
return (good)? val : default_value;
}
};
get
, но возвращаешь ссылку на переменную. Написанное не соответствует смыслу. Если get
, то ссылка на константу. Если ссылка на переменную, то access
.get
всегда подразумевает константный контекст, поэтому const
для метода строго обязателен. Иначе снова написанное не соответствует смыслу.но я 2 раза написал одну и ту же функцию, как это оптимизировать
инструменты на c++ для модификации игр ( классы, поля, dll)