Re[4]: Разреженный массив в compile-time
От: avovana Россия  
Дата: 25.07.18 10:46
Оценка:
Здравствуйте, Croessmah, Вы писали:

C>Решение, на киберфоруме, ссылку на которое Вам дали, сделалось примерно за час-полтора. )))


C>Что у Вас не получается? Задача, в принципе, не особо сложная.


Croessmah, рад Вас здесь видеть!
То решение мне сложновато давалось для понимания, т.к. опыта у меня немного.
Оказалось, что проще было написать что-то своё и уточнить)

C>Вам нужно пройти по элементам каждого из массивов и сложить их, соответственно, нужен некий get, возвращающий значение элемента массива по индексу (либо из массива, либо значение по-умолчанию).


C>Переделал своё решение с киберфорума под Ваше.

C>Как видите, такой код проходит все тесты в main.
Спасибо за взгляд на решение проблемы с такой стороны.

Так понимаю, что реализация SequenceType написана в стиле шаблонного программирования:
Представлена шаблонная структура со специализацией. Причем два раза.

Первый раз увидел std::declval<>() в реальном коде. Интересно.

Не совсем понял смысл trailing return type
-> SparseArray<decltype(std::declval<T>() + std::declval<TOther>()), Mask | MaskOther>

Вроде бы auto и так должно вывести тип.

Интересная возможность вернуть ссылку с помощью применения std::conditional_t.

Изучаю код. Спасибо за ответ


Странно, что если раскомментирую секцию private в примере с operatorPlusStage1, operatorPlusStage2, то компилятор начинает ругаться, что в методе operator+ идет обращение к закрытой части класса.
operator+ ведь обычный метод класса, который должен иметь доступ ко всем полям и методам класса.
Отредактировано 25.07.2018 10:52 avovana . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.