Commit c7fae41f51100c8939cff8001ca53bff03aa94b3
1 parent
a773e56f
constexpr and noexcept in vector template
Showing
3 changed files
with
6 additions
and
6 deletions
examples11/04-vectortmpl/vector.h
@@ -11,7 +11,7 @@ template <class C> class vector { | @@ -11,7 +11,7 @@ template <class C> class vector { | ||
11 | 11 | ||
12 | private: | 12 | private: |
13 | static unsigned int round_up_to_power_of_2(unsigned w) { | 13 | static unsigned int round_up_to_power_of_2(unsigned w) { |
14 | - const auto bits = std::numeric_limits<unsigned>::digits; | 14 | + constexpr auto bits = std::numeric_limits<unsigned>::digits; |
15 | --w; | 15 | --w; |
16 | for (unsigned s = 1; s < bits; s *= 2) | 16 | for (unsigned s = 1; s < bits; s *= 2) |
17 | w |= w >> s; | 17 | w |= w >> s; |
@@ -105,7 +105,7 @@ public: | @@ -105,7 +105,7 @@ public: | ||
105 | } | 105 | } |
106 | } | 106 | } |
107 | 107 | ||
108 | - void swap(vector<C> &s) { | 108 | + void swap(vector<C> &s) noexcept { |
109 | C *t1 = s.data; | 109 | C *t1 = s.data; |
110 | unsigned int t2 = s.size; | 110 | unsigned int t2 = s.size; |
111 | unsigned int t3 = s.cap; | 111 | unsigned int t3 = s.cap; |
examples11/05-foldexpr/vector.h
@@ -11,7 +11,7 @@ template <class C> class vector { | @@ -11,7 +11,7 @@ template <class C> class vector { | ||
11 | 11 | ||
12 | private: | 12 | private: |
13 | static unsigned int round_up_to_power_of_2(unsigned w) { | 13 | static unsigned int round_up_to_power_of_2(unsigned w) { |
14 | - const auto bits = std::numeric_limits<unsigned>::digits; | 14 | + constexpr auto bits = std::numeric_limits<unsigned>::digits; |
15 | --w; | 15 | --w; |
16 | for (unsigned s = 1; s < bits; s *= 2) | 16 | for (unsigned s = 1; s < bits; s *= 2) |
17 | w |= w >> s; | 17 | w |= w >> s; |
@@ -105,7 +105,7 @@ public: | @@ -105,7 +105,7 @@ public: | ||
105 | } | 105 | } |
106 | } | 106 | } |
107 | 107 | ||
108 | - void swap(vector<C> &s) { | 108 | + void swap(vector<C> &s) noexcept { |
109 | C *t1 = s.data; | 109 | C *t1 = s.data; |
110 | unsigned int t2 = s.size; | 110 | unsigned int t2 = s.size; |
111 | unsigned int t3 = s.cap; | 111 | unsigned int t3 = s.cap; |
examples11/06-template_metaprogramming/vector.h
@@ -12,7 +12,7 @@ template <class C> class vector { | @@ -12,7 +12,7 @@ template <class C> class vector { | ||
12 | 12 | ||
13 | private: | 13 | private: |
14 | static unsigned int round_up_to_power_of_2(unsigned w) { | 14 | static unsigned int round_up_to_power_of_2(unsigned w) { |
15 | - const auto bits = std::numeric_limits<unsigned>::digits; | 15 | + constexpr auto bits = std::numeric_limits<unsigned>::digits; |
16 | --w; | 16 | --w; |
17 | for (unsigned s = 1; s < bits; s *= 2) | 17 | for (unsigned s = 1; s < bits; s *= 2) |
18 | w |= w >> s; | 18 | w |= w >> s; |
@@ -110,7 +110,7 @@ public: | @@ -110,7 +110,7 @@ public: | ||
110 | } | 110 | } |
111 | } | 111 | } |
112 | 112 | ||
113 | - void swap(vector<C> &s) { | 113 | + void swap(vector<C> &s) noexcept { |
114 | C *t1 = s.data; | 114 | C *t1 = s.data; |
115 | unsigned int t2 = s.size; | 115 | unsigned int t2 = s.size; |
116 | unsigned int t3 = s.cap; | 116 | unsigned int t3 = s.cap; |