Podemos tener un espacio de nombres absoluto en la definición de la función si el tipo de retorno es un objeto en C ++?
Consideremos una funciónbar
declarado en el espacio de nombresfoo
que devuelve unstd::vector< float >
(pero también funciona con otros objetos).
// header.h
#include <vector>
namespace foo
{
::std::vector< float > bar();
}
ompilar su definición utilizando el espacio de nombres relativo funciona.
#include "header.h"
::std::vector< float > foo::bar()
{
}
in embargo, compilar su definición usando el espacio de nombres absoluto no funciona.
#include "header.h"
::std::vector< float > ::foo::bar()
{
}
l error de @Return de GCC es
function.cpp:3:26: error: ‘foo’ in ‘class std::vector<float>’ does not name a type
::std::vector< float > ::foo::bar()
Resulta que los espacios están permitidos en el espacio de nombres, entonces,::std::vector< float > ::foo::bar()
es equivalente a::std::vector< float >::foo::bar()
. ¿Cómo puedo usar el espacio de nombres absoluto en la definición de funciones cuando el tipo de retorno es un objeto?