Часто утверждается, что std::valarray
был предназначен для устранения некоторых форм псевдонимов, чтобы обеспечить лучшую оптимизацию (например, см. valarray против вектора: почему был введен valarray?)
Кто-нибудь может уточнить это утверждение? Мне кажется, что псевдонимы всегда возможны, если вы можете получить указатель на элемент — который вы можете, потому что operator[]
возвращает ссылку.
«Нет наложения» относится к глобальным функциям, таким как cos
которые принимают valarray
в качестве параметра. cos
(или любая другая функция) применяется ко всему массиву, и реализация компилятора и стандартной библиотеки может предположить, что массив не имеет псевдонима и может выполнять операцию над каждым элементом независимо.
Это также относится к таким вещам, как valarray
«s operator+
, что делает для каждого элемента сложение и т. д.