Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. // Variadic template
  2. template < int n >
  3. class Vec
  4. {
  5. private:
  6.     float e[n];
  7. public:
  8.     template <typename... Arguments>
  9.     Vec(Arguments... params);
  10.     constexpr int GetSize( void ) const { return n; }
  11. };
  12.  
  13. template < int n >
  14. template <typename... Arguments>
  15. Vec<n>::Vec<n>(Arguments... params)
  16. {
  17.     static_assert(sizeof...(Arguments) == n, “size mismatch”);
  18.     float v[] = { params... };
  19.     for (int i = 0; i < n; ++i) {
  20.         e[i] = v[i];
  21.     }
  22. }