Z poniższego fragmentu kodu pojawia się ostrzeżenie:ostrzeżenie: specjalizacja szablonu w innej przestrzeni nazw
warning: specialization of ‘template<class _Iterator> struct std::iterator_traits’ in different namespace [-fpermissive]
template<> class std::iterator_traits<Token_ptr>{
public:
typedef Word difference_type;
typedef Word value_type;
typedef Token_ptr pointer;
typedef Word& reference ;
typedef std::bidirectional_iterator_tag iterator_category ;
};
Mimo wszystko działa poprawnie, nie każdy organ wiedzieć, co dokładnie oznacza i dlaczego jest wydane ostrzeżenie. (g ++ wydaje ostrzeżenie, podczas gdy clang ++ nie).
Wydaje się, że jest to ten sam problem, co zgłoszony w [to pytanie] (http://stackoverflow.com/questions/25311512/specialization-of-template-in-different-namespace). – nonsensickle
[dlaczego specjalizacja szablonów nie może znajdować się w innym obszarze nazw] (http://stackoverflow.com/questions/3072248/why-arent-template-specializations-allowed-to-be-in-different-namespaces) również być przedmiotem zainteresowania. – nonsensickle