tinympl  0.2
mini MPL library for C++11
fill_n.hpp
1 // Copyright (C) 2013, Ennio Barbaro.
2 //
3 // Use, modification, and distribution is subject to the Boost Software
4 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
5 // http://www.boost.org/LICENSE_1_0.txt)
6 //
7 // See http://sbabbi.github.io/tinympl for documentation.
8 //
9 // You are welcome to contact the author at:
10 // enniobarbaro@gmail.com
11 //
12 
13 #ifndef TINYMPL_VARIADIC_FILL_N_HPP
14 #define TINYMPL_VARIADIC_FILL_N_HPP
15 
16 #include <cstddef>
17 
18 namespace tinympl {
19 namespace variadic {
20 
32 template<std::size_t n, class T, template<class ...> class Out> struct fill_n;
33 
34 
35 template<std::size_t n, class T, template<class ...> class Out> struct fill_n {
36 private:
37  template<class ... Args> struct impl {
38  typedef typename fill_n < n - 1, T, Out >::template
39  impl<Args..., T>::type type;
40  };
41 
42  template<std::size_t, class, template<class ...> class>
43  friend struct fill_n;
44 
45 public:
46  typedef typename impl<>::type type;
47 };
48 
49 template<class T, template<class...> class Out> struct fill_n<0, T, Out> {
50 private:
51  template<class ... Args> struct impl {
52  typedef Out<Args...> type;
53  };
54 
55  template<std::size_t, class, template<class ...> class>
56  friend struct fill_n;
57 
58 public:
59  typedef typename impl<>::type type;
60 };
61 
62 } // namespace variadic
63 } // namespace tinympl
64 
65 #endif // TINYMPL_VARIADIC_FILL_N_HPP
Fills an output sequence with N equal elements.
Definition: fill_n.hpp:32
Fills an output sequence with n equal elements.
Definition: fill_n.hpp:32