Использование index
дважды в
return (*check(index_, "dereferencing unbound StrblobPtr!"))[index_];
в порядке, если вы не изменяете его.
Что не хорошо, хотя вы безоговорочно указываете указатель. Вы говорите, check
может вернуть нулевой указатель. Обращение через нулевой указатель является неопределенным поведением. Вы должны убедиться, что вы защититесь от этого, проверив возвращаемое значение в первую очередь. Если значение равно нулю, вам нужно либо вернуть часового, либо выдать исключение.