This line of code: https://github.com/apache/trafficserver/blob/master/iocore/net/SSLSNIConfig.cc#L59
should be: for (const auto &item : Y_sni.items) { This causes item to be of type const Item & instead of Item. Thus avoiding making a copy of each element in the vector. Look at this example code: https://godbolt.org/z/7j0LFT Note in the assembler code how foo() calls the copy constructor for Item in the for loop, and foo2() does not.