NO - nunca hagas esto!
Es imposible, es probable que tenga accidentes accidentales.
La única manera de lograr que se haga correctamente está usando el cambio de nombre de espacio de nombres: es decir, crear alternativas versión impulso colocado en diferentes espacio de nombres.
La última versión de BCP proporciona esta opción. Entonces usarás algo como boost_1_43 en lugar de boost. Pero será bastante transparente para ti. Pero aún debe saber que no puede usar dos versiones de boost en el mismo archivo cpp.
también echar un vistazo en esta discusión: Creating Library with backward compatible ABI that uses Boost
El guión gustado cambia el nombre de espacio de nombres, define e incluye lo que puede incluir en realidad dos versiones de impulso como
#include <boost/foo.hpp>
#include <myboost/bar.hpp>
boost::foo f;
myboost::bar b;
Boost BCP no lo permite .
Pero aún así hay que tener cuidado ya que algunas bibliotecas de símbolos exportar extern "C" sin impulso prefijo, impulsar :: hilo y boost :: API C de expresiones regulares (regexec, regcomp)
Editar
Como ejemplo de dicha emisión crear archivos siguientes:
a.cpp:
template<typename Foo>
Foo add(Foo a, Foo b)
{
return a+b;
}
int foo(int x,int y)
{
return add(x,y);
}
b.cpp:
template<typename Foo>
Foo add(Foo a, Foo b)
{
return a-b;
}
int bar(int x,int y)
{
return add(x,y);
}
test.CPP:
#include <iostream>
int foo(int,int);
int bar(int,int);
int main()
{
std::cout<< foo(10,20) <<" " <<bar(10,20) << std::endl;
}
compilarlas:
g++ a.cpp b.cpp test.cpp
que se puede esperar:
30 -10
Pero obtendrá
30 30
o
-10 -10
Según el orden de enlace.
Así, utilizando dos versiones impulsar accidentalmente usted puede tomar símbolos de otros impulso y chocar mismo que en el programa de este símbolo int add<int>(int,int)
se resolvió mismo símbolo, incluso si se coloca en diferentes unidades de compilación.
+1 para el enlace, aunque no estoy de acuerdo con la primera mitad de su respuesta. – richj
@richj - es posible en las plataformas DLL donde todos los enlaces son explícitos, pero para ELF suceden cosas malas (por experiencia) – Artyom