Как я понимаю restrict
, он отмечает, что указатель является единственной ссылкой на конкретные данные внутри функции. Обычно я вижу, что используется в параметрах функции, но это также, кажется, быть полезным:определение переменной как автоматического ограничения
char *restrict a = get_some_string();
char *restrict b = get_some_other_string();
(так что компилятор знает, что изменение a
никогда не изменится b
, и может сделать дополнительную оптимизацию).
Если get_some_string
возвращает очень сложный тип, представляется полезным использовать ключевое слово auto
;
auto a = get_some_string();
auto b = get_some_other_string();
Но использование auto restrict
вызывает ошибку «Ограничить требует указатель». Итак, как я могу их объединить?
Как было отмечено в комментариях, restrict
не является стандартом ключевое слово в C++; Я забыл, что у меня есть линия #define restrict __restrict__
в моем проекте, который работает в GCC.
'decltype (get_some_string()) ограничивает a = get_some_string();'? Хотя decltype имеет несколько другое поведение. –
Альтернативное предложение: вместо 'auto' используйте' typedef'. –
@JohnDibling 'typedef' это то, что я использовал. Но я стараюсь не отставать от времени и упрощать свой код! – Dave