parent[num] = findMN(parent[num]);
return parent[num];А разве в случае prvalue трейты std::remove_reference+std::remove_const не сделают ничего ?
std::decay даже понятнее, т.к. его семантика говорит снять все что есть. А если ничего нет, то и снимать нечего. Тут нужно видеть разницу между "снять все что есть" и "снять именно это".std::decay удобен своей семантикой. Читаешь и сразу понимаешь что происходит с переданным типом.std::decay. Преобразование к указателю - незначительное зло, с которым даже можно успешно жить.std::decay, они всегда идут разными путями. test первым параметром зайдет внезапно prvalue, для которого T выведется в чистый тип. Трансляция даже не остановится, т.к. std::remove_reference и std::remove_const созданы так, чтобы не замечать отсутствия того, что они призваны удалять.static_assert на соответствие типов. И в этом месте яб именно std::decay использовал. Так твой контракт получит механизм соблюдения.requires для явного определения контракта. int value = 12; должно иметь характеристику времени компиляции. В ином случае контекстом вызова scale в выражении scale(value) будет контекст времени исполнения, а не контекст времени компиляции. И кто решил что это именно сбой?
Какая то проблема именно в написании -> int(*)[10]
Публикация вопросов, компетентно ответить на которые могут только представители конкретной организации, неизбежно приводит к провокации нарушений п. 3.4, 5.14 - 5.17 правил данного Сервиса.
У меня есть метод
должен возвращать текст из файла построчно
return 0;break;
return res;
А почему у тебя возникла сама проблема писать одни и те же переменные в структуре?
Я тебя еще немного не понимаю, у тебя терминология отличается от стандарта. Давай, я опишу тебе термины, а ты переформулируешь в этих терминах свой текст из цитаты.
Все пользователи C++ оперируют терминами объявления и определения, переменной, константы и поля, глобальной функции, статической функции и метода, и так далее. Тебя будут правильно понимать если ты будешь оперировать теми же терминами, что и все остальные.