|
|
| When applied to an expression of polymorphic type, evaluation of a typeid expression may involve runtime overhead (a virtual table lookup), otherwise typeid expression is resolved at compile time. |
| coder777 wrote: |
|---|
| Does it even make sense to have a name of an object that cannot be an object? |
void too: https://ideone.com/1PSGzH |
|
typeid or sizeof.| template <class... Tuples> constexpr tuple<CTypes...> tuple_cat(Tuples&&... tpls); In the following paragraphs, let Ti be the ith type in Tuples, Ui be remove_reference_t<Ti>, and tpi be the ith parameter in the function parameter pack tpls, where all indexing is zero-based. Requires: For all i, Ui shall be the type cvi tuple<Argsi ...>, where cvi is the (possibly empty) ith cv-qualifier-seq and Argsi is the parameter pack representing the element types in Ui . Let Aik be the kith type in Argsi . For all Aik the following requirements shall be satisfied: If Ti is deduced as an lvalue reference type, then is_constructible<Aik , cvi Aik&>::value == true, otherwise is_constructible<Aik , cvi Aik&&>::value == true. |