You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Concepts is a facility for specifying requirements for template arguments.
16801
-
It is an [ISO Technical Specification](#Ref-conceptsTS), but currently supported only by GCC.
16801
+
It is an [ISO Technical Specification](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4553.pdf), but currently supported only by GCC.
16802
16802
Concepts are, however, crucial in the thinking about generic programming and the basis of much work on future C++ libraries
16803
16803
(standard and other).
16804
16804
@@ -16885,7 +16885,7 @@ Flag template type arguments without concepts
16885
16885
16886
16886
##### Reason
16887
16887
16888
-
"Standard" concepts (as provided by the [GSL](#S-GSL) and the [Ranges TS](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/n4569.pdf), and hopefully soon the ISO standard itself)
16888
+
"Standard" concepts (as provided by the [GSL](#S-gsl) and the [Ranges TS](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/n4569.pdf), and hopefully soon the ISO standard itself)
16889
16889
save us the work of thinking up our own concepts, are better thought out than we can manage to do in a hurry, and improve interoperability.
16890
16890
16891
16891
##### Note
@@ -17682,7 +17682,7 @@ Because that's the best we can do without direct concept support.
17682
17682
17683
17683
##### Note
17684
17684
17685
-
Beware of [complementary constraints](# T.25).
17685
+
Beware of [complementary constraints](#Rt-not).
17686
17686
Faking concept overloading using `enable_if` sometimes forces us to use that error-prone design technique.
17687
17687
17688
17688
##### Enforcement
@@ -18031,7 +18031,7 @@ or a traditional traits template to be specialized on the user's type.
18031
18031
If you intend to call your own helper function `helper(t)` with a value `t` that depends on a template type parameter,
18032
18032
put it in a `::detail` namespace and qualify the call as `detail::helper(t);`.
18033
18033
An unqualified call becomes a customization point where any function `helper` in the namespace of `t`'s type can be invoked;
18034
-
this can cause problems like [unintentionally invoking unconstrained function templates](#Rt-unconstrained-adl).
18034
+
this can cause problems like [unintentionally invoking unconstrained function templates](#Rt-visible).
18035
18035
18036
18036
18037
18037
##### Enforcement
@@ -20654,13 +20654,13 @@ Type safety profile summary:
20654
20654
* <a name="Pro-type-constcast"></a>Type.3: Don't use `const_cast` to cast away `const` (i.e., at all):
20655
20655
[Don't cast away const](#Res-casts-const).
20656
20656
* <a name="Pro-type-cstylecast"></a>Type.4: Don't use C-style `(T)expression` or functional `T(expression)` casts:
20657
-
Prefer [construction](#Res-construct) or [named casts](#Res-cast-named).
20657
+
Prefer [construction](#Res-construct) or [named casts](#Res-casts-named).
20658
20658
* <a name="Pro-type-init"></a>Type.5: Don't use a variable before it has been initialized:
20659
20659
[always initialize](#Res-always).
20660
20660
* <a name="Pro-type-memberinit"></a>Type.6: Always initialize a member variable:
20661
20661
[always initialize](#Res-always),
20662
20662
possibly using [default constructors](#Rc-default0) or
20663
-
[default member initializers](#Rc-in-class-initializers).
20663
+
[default member initializers](#Rc-in-class-initializer).
0 commit comments