Запитання з тегом «static-cast»


4
Чи слід використовувати static_cast або reinterpret_cast під час передавання порожнечі * до будь-якого
Як static_cast, так і reinterpret_cast, здається, добре спрацьовують для перенесення недійсних * до іншого типу вказівника. Чи є вагомі причини надати перевагу одне над іншим?

1
Чому `decltype (static_cast <T> (...))` не завжди є `T`?
Для наступного коду передається все, крім останнього твердження: template&lt;typename T&gt; constexpr void assert_static_cast_identity() { using T_cast = decltype(static_cast&lt;T&gt;(std::declval&lt;T&gt;())); static_assert(std::is_same_v&lt;T_cast, T&gt;); } int main() { assert_static_cast_identity&lt;int&gt;(); assert_static_cast_identity&lt;int&amp;&gt;(); assert_static_cast_identity&lt;int&amp;&amp;&gt;(); // assert_static_cast_identity&lt;int(int)&gt;(); // illegal cast assert_static_cast_identity&lt;int (&amp;)(int)&gt;(); assert_static_cast_identity&lt;int (&amp;&amp;)(int)&gt;(); // static assert fails } Чому це останнє твердження провалюється, а static_cast&lt;T&gt;не завжди повертається …
24 c++  static-cast 

1
Чому static_cast потрібен при впровадженні gcc в програмі is_nothrow_constructible?
type_traitsЧому випливає з реалізації GCC, навіщо це static_castпотрібно тут? template &lt;typename _Tp, typename... _Args&gt; struct __is_nt_constructible_impl : public integral_constant&lt;bool, noexcept(_Tp(declval&lt;_Args&gt;()...))&gt; {}; template &lt;typename _Tp, typename _Arg&gt; struct __is_nt_constructible_impl&lt;_Tp, _Arg&gt; : public integral_constant&lt;bool, // Why is `static_cast` needed here? noexcept(static_cast&lt;_Tp&gt;(declval&lt;_Arg&gt;()))&gt; {};
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.