x
Yes
No
Do you want to visit DriveHQ English website?
Inicio
Características
Precios
Prueba gratuita
Software cliente
Acerca de nosotros
Servidor de archivos
|
Solución de copias de seguridad
|
Servidor FTP
|
Servidor de correo electrónico
|
Alojamiento web
|
Software cliente
Servidor de archivos
Solución de copia de seguridad
Servidor FTP
Servidor de correo electrónico
Alojamiento web
Software cliente
construct.hpp - Hosted on DriveHQ Cloud IT Platform
Arriba
Subir
Descargar
Compartir
Publicar
Nueva carpeta
Nuevo archivo
Copiar
Cortar
Eliminar
Pegar
Clasificación
Actualizar
Ruta de la carpeta: \\game3dprogramming\materials\GameFactory\GameFactoryDemo\references\boost_1_35_0\boost\lambda\construct.hpp
Girar
Efecto
Propiedad
Historial
// - construct.hpp -- Lambda Library ------------- // // Copyright (C) 2000 Gary Powell (powellg@amazon.com) // Copyright (C) 1999, 2000 Jaakko J�rvi (jaakko.jarvi@cs.utu.fi) // // 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) // // For more information, see http://www.boost.org // // ----------------------------------------------- #if !defined(BOOST_LAMBDA_CONSTRUCT_HPP) #define BOOST_LAMBDA_CONSTRUCT_HPP namespace boost { namespace lambda { // constructor is used together with bind. constructor
creates a bindable // function object that passes its arguments forward to a constructor call // of type A template
struct constructor { template
struct sig { typedef T type; }; T operator()() const { return T(); } template
T operator()(A1& a1) const { return T(a1); } template
T operator()(A1& a1, A2& a2) const { return T(a1, a2); } template
T operator()(A1& a1, A2& a2, A3& a3) const { return T(a1, a2, a3); } template
T operator()(A1& a1, A2& a2, A3& a3, A4& a4) const { return T(a1, a2, a3, a4); } template
T operator()(A1& a1, A2& a2, A3& a3, A4& a4, A5& a5) const { return T(a1, a2, a3, a4, a5); } template
T operator()(A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6) const { return T(a1, a2, a3, a4, a5, a6); } template
T operator()(A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7) const { return T(a1, a2, a3, a4, a5, a6, a7); } template
T operator()(A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8) const { return T(a1, a2, a3, a4, a5, a6, a7, a8); } template
T operator()(A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9) const { return T(a1, a2, a3, a4, a5, a6, a7, a8, a9); } template
T operator()(A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10) const { return T(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); } }; namespace detail { // A standard conforming compiler could disambiguate between // A1* and A1&, but not all compilers do that, so we need the // helpers template
struct destructor_helper { template
static void exec(A1& a1) { // remove all the qualifiers, not sure whether it is necessary typedef typename boost::remove_cv
::type plainA1; a1.~plainA1(); } }; template <> struct destructor_helper
{ template
static void exec(A1* a1) { typedef typename boost::remove_cv
::type plainA1; (*a1).~plainA1(); } }; } // destructor funtion object struct destructor { template
struct sig { typedef void type; }; template
void operator()(A1& a1) const { typedef typename boost::remove_cv
::type plainA1; detail::destructor_helper
::value>::exec(a1); } }; // new_ptr is used together with bind. // note: placement new is not supported template
struct new_ptr { template
struct sig { typedef T* type; }; T* operator()() const { return new T(); } template
T* operator()(A1& a1) const { return new T(a1); } template
T* operator()(A1& a1, A2& a2) const { return new T(a1, a2); } template
T* operator()(A1& a1, A2& a2, A3& a3) const { return new T(a1, a2, a3); } template
T* operator()(A1& a1, A2& a2, A3& a3, A4& a4) const { return new T(a1, a2, a3, a4); } template
T* operator()(A1& a1, A2& a2, A3& a3, A4& a4, A5& a5) const { return new T(a1, a2, a3, a4, a5); } template
T* operator()(A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6) const { return new T(a1, a2, a3, a4, a5, a6); } template
T* operator()(A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7) const { return new T(a1, a2, a3, a4, a5, a6, a7); } template
T* operator()(A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8) const { return new T(a1, a2, a3, a4, a5, a6, a7, a8); } template
T* operator()(A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9) const { return new T(a1, a2, a3, a4, a5, a6, a7, a8, a9); } template
T* operator()(A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10) const { return new T(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); } }; // delete_ptr return void struct delete_ptr { template
struct sig { typedef void type; }; template
void operator()(A1& a1) const { delete a1; } }; // new_array is used together with bind. template
struct new_array { template
struct sig { typedef T* type; }; T* operator()(int size) const { return new T[size]; } }; // delete_ptr return void struct delete_array { template
struct sig { typedef void type; }; template
void operator()(A1& a1) const { delete[] a1; } }; } // namespace lambda } // namespace boost #endif
construct.hpp
Dirección de la página
Dirección del archivo
Anterior
5/13
Siguiente
Descargar
( 6 KB )
Comments
Total ratings:
0
Average rating:
No clasificado
of 10
Would you like to comment?
Join now
, or
Logon
if you are already a member.