c++ – Is array loaded in cache completely, does it pollute cache?

In regards to cache usage and supposing 80/20 use of objects, can the objects be laid out (option 1) in an array without polluting cache with the rest of its indices when called; or (option 2) to prevent cache pollution, each object must be defined separately?

I have an enum EFoo and want to use it as a key to static objects Foo (with size of 128 bytes). If they’re the same, option 1 is better because it doesn’t require maintaining an additional switch list.

Storage:

// FooData.inl
#include Foo.h

// option 1: stored as array
static constexpr Foos(256) {
  /* A */ {...},
  /* B */ {...},
}

// option 2: stored as separate
namespace Foos {
  static constexpr A { ... };
  ...
}

Usage:

// Keys.h
enum class EFoo : uint8 { A, B, ... }
// Foo.h
struct Foo { ... void operator= (EFoo Key); }

// Foo.cpp
#include Foo.h
#include FooData.inl
void Foo::operator= (EFoo Key) {
  // option 1: read from array
  *this = Foos((uint8)Key);
  // option 2: read from separate
  switch (Key) {
    case EFoo::A: *this = Foos::A; ...
  }
}