Simple variadic constructor template

I don’t write a lot of templated code and haven’t really cracked template meta-programming yet but I thought this was a nice easy to read variadic template constructor using an initializer list and std::forward to move data into a member variable
https://godbolt.org/z/TYbEhq

#include <cstdint>   
#include <limits>
#include <array>

struct Foo 
{
   static constexpr auto size = 8;

   Foo(short n) noexcept 
   {
      for ( auto &e : data )
         e = n;
   }

   Foo( std::array<short,size> a ) noexcept 
   {
      for ( int i = 0;  i < size;  ++i )
         data[i] = a[i];
   }

   template <typename... Types>
   Foo( Types&&... t ) noexcept :
   data{static_cast<short>(std::forward<Types>(t))... }{}

private: 
  std::array<short, size> data;
};

int main() 
{
   Foo a = 1;         // initialize all to scalar value
   Foo b = {{1,2,3}}; // initialize with array... OK!
   Foo c =  {1,2,3};  // initialize with array... Variadic
}