覚書。

        // 呼び出し側が高速に使える forEach 的な手法
        //これは「関数の中に関数を渡して処理する」=高階関数というテクです!
        // fnとは?渡されたラムダ関数・関数ポインタ・関数オブジェクトのこと。
        //// 全要素を加算する処理(呼び出し側は何も意識せず!)
        template <typename Func>
        void forEach(Func&& fn) {
            T* pVec = this->mVector;
            for (size_t i = 0; i < piSize; ++i) {
#ifdef PREFETCH_OPT
                __builtin_prefetch(&pVec[i + 1], 0, 1);
#endif
                fn(pVec[i]); // ← fnがここで1要素に対する処理を行っている!
            }
        }
        //        //呼び出し方
        //        void foo(){
        //            int sum = 0;
        //            arr.forEach([&](int& val) {
        //                sum += val;  // ← fnの中身
        //            });
        //        }

 

引用 ChatGPT