Me doy cuenta de que hay una semántica sutilmente diferente para algunos de estos, debido a ADL.
Sin embargo, en general: ¿cuál debería preferir (si existe) y por qué?
(¿O depende de la situación (por ejemplo, encabezado en línea frente a implementación?)
También: ¿debería preferir ::std::
sobre std::
?
using namespace std;
pair<string::const_iterator, string::const_iterator> f(const string &s)
{
return make_pair(s.begin(), s.end());
}
o
std::pair<std::string::const_iterator, std::string::const_iterator> f(const std::string &s)
{
return std::make_pair(s.begin(), s.end());
}
o
using std::pair;
using std::string;
pair<string::const_iterator, string::const_iterator> f(const string &s)
{
return make_pair(s.begin(), s.end());
}
o
std::pair<std::string::const_iterator, std::string::const_iterator> f(const std::string &s)
{
using std::make_pair;
return make_pair(s.begin(), s.end());
}
o
std::pair<std::string::const_iterator, std::string::const_iterator> f(const std::string &s)
{
using namespace std;
return make_pair(s.begin(), s.end());
}
o algo mas?
(Suponiendo que no tengo C ++ 11 y auto
.)