From Jason Turner

[meta.unary]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpz4rrpyzb/{from.md → to.md} +18 -5
tmp/tmpz4rrpyzb/{from.md → to.md} RENAMED
@@ -48,21 +48,34 @@ is_const<const int&>::value // false
48
  is_const<int[3]>::value // false
49
  is_const<const int[3]>::value // true
50
  ```
51
 
52
  ``` cpp
53
- remove_const<const volatile int>::type // volatile int
54
- remove_const<const int* const>::type // const int*
55
- remove_const<const int&>::type // const int&
56
- remove_const<const int[3]>::type // int[3]
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  ```
58
 
59
  Given the following function prototype:
60
 
61
  ``` cpp
62
  template <class T>
63
- typename add_rvalue_reference<T>::type create();
64
  ```
65
 
66
  the predicate condition for a template specialization
67
  `is_constructible<T, Args...>` shall be satisfied if and only if the
68
  following variable definition would be well-formed for some invented
 
48
  is_const<int[3]>::value // false
49
  is_const<const int[3]>::value // true
50
  ```
51
 
52
  ``` cpp
53
+ remove_const_t<const volatile int> // volatile int
54
+ remove_const_t<const int* const> // const int*
55
+ remove_const_t<const int&> // const int&
56
+ remove_const_t<const int[3]> // int[3]
57
+ ```
58
+
59
+ ``` cpp
60
+ // Given:
61
+ struct P final { };
62
+ union U1 { };
63
+ union U2 final { };
64
+
65
+ // the following assertions hold:
66
+ static_assert(!is_final<int>::value, "Error!");
67
+ static_assert( is_final<P>::value, "Error!");
68
+ static_assert(!is_final<U1>::value, "Error!");
69
+ static_assert( is_final<U2>::value, "Error!");
70
  ```
71
 
72
  Given the following function prototype:
73
 
74
  ``` cpp
75
  template <class T>
76
+ add_rvalue_reference_t<T> create() noexcept;
77
  ```
78
 
79
  the predicate condition for a template specialization
80
  `is_constructible<T, Args...>` shall be satisfied if and only if the
81
  following variable definition would be well-formed for some invented