Supposons que nous ayons cette structure:Qui est correct ici, GCC ou MSVC?
namespace some_namespace::types {
using foo_t = int;
}
namespace some_namespace::classes {
class bar {
public:
auto do_stuff() -> types::foo_t;
};
}
using namespace some_namespace::classes;
auto bar::do_stuff() -> types::foo_t {
return 1;
}
Ce code se compile avec bonheur dans GCC6. Par contre, VS15 avec le commutateur /std:c++latest
activé ne reconnaît pas le type de retour . Il renvoie C2653.
Maintenant, ce que je trouve très suspect est que cela se fixe en changeant la seconde moitié à ceci:
using namespace some_namespace;
auto classes::bar::do_stuff() -> types::foo_t {
return 1;
}
qui à mes yeux doivent être égaux. Est-ce que je me trompe en pensant que c'est un bug de MSVC? Que dit la norme à ce sujet?
Non seulement GCC et MSVC implémentant un nouveau standard à des débits différents et avec des priorités différentes. –
Je pense que GCC est juste plus indulgent. – Arunmu
Prise en charge de MSVC C++ 17: https://msdn.microsoft.com/en-us/library/hh567368.aspx –