Server IP : 172.67.216.182 / Your IP : 162.158.163.191 Web Server : Apache System : Linux krdc-ubuntu-s-2vcpu-4gb-amd-blr1-01.localdomain 5.15.0-142-generic #152-Ubuntu SMP Mon May 19 10:54:31 UTC 2025 x86_64 User : www ( 1000) PHP Version : 7.4.33 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /www/server/mysql/src/boost/boost_1_59_0/boost/ |
Upload File : |
// boost polymorphic_pointer_cast.hpp header file ----------------------------------------------// // (C) Copyright Boris Rasin and Antony Polukhin 2014-2015. // Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // See http://www.boost.org/libs/conversion for Documentation. #ifndef BOOST_CONVERSION_POLYMORPHIC_POINTER_CAST_HPP #define BOOST_CONVERSION_POLYMORPHIC_POINTER_CAST_HPP # include <boost/config.hpp> # include <boost/assert.hpp> # include <boost/pointer_cast.hpp> # include <boost/throw_exception.hpp> # include <boost/utility/declval.hpp> # ifdef BOOST_NO_CXX11_DECLTYPE # include <boost/typeof/typeof.hpp> # endif #ifdef BOOST_HAS_PRAGMA_ONCE # pragma once #endif namespace boost { // See the documentation for descriptions of how to choose between // static_pointer_cast<>, dynamic_pointer_cast<>, polymorphic_pointer_cast<> and polymorphic_pointer_downcast<> // polymorphic_pointer_downcast --------------------------------------------// // BOOST_ASSERT() checked polymorphic downcast. Crosscasts prohibited. // Supports any type with static_pointer_cast/dynamic_pointer_cast functions: // built-in pointers, std::shared_ptr, boost::shared_ptr, boost::intrusive_ptr, etc. // WARNING: Because this cast uses BOOST_ASSERT(), it violates // the One Definition Rule if used in multiple translation units // where BOOST_DISABLE_ASSERTS, BOOST_ENABLE_ASSERT_HANDLER // NDEBUG are defined inconsistently. // Contributed by Boris Rasin namespace detail { template <typename Target, typename Source> struct dynamic_pointer_cast_result { #ifdef BOOST_NO_CXX11_DECLTYPE BOOST_TYPEOF_NESTED_TYPEDEF_TPL(nested, dynamic_pointer_cast<Target>(boost::declval<Source>())) typedef typename nested::type type; #else typedef decltype(dynamic_pointer_cast<Target>(boost::declval<Source>())) type; #endif }; } template <typename Target, typename Source> inline typename detail::dynamic_pointer_cast_result<Target, Source>::type polymorphic_pointer_downcast (const Source& x) { BOOST_ASSERT(dynamic_pointer_cast<Target> (x) == x); return static_pointer_cast<Target> (x); } template <typename Target, typename Source> inline typename detail::dynamic_pointer_cast_result<Target, Source>::type polymorphic_pointer_cast (const Source& x) { typename detail::dynamic_pointer_cast_result<Target, Source>::type tmp = dynamic_pointer_cast<Target> (x); if ( !tmp ) boost::throw_exception( std::bad_cast() ); return tmp; } } // namespace boost #endif // BOOST_CONVERSION_POLYMORPHIC_POINTER_CAST_HPP