有了下面這段代碼我得到警告:警告:在不同的命名空間模板的專業化
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 ;
};
雖然一切正常,沒有任何機構確切地知道什麼樣的手段,爲什麼發警告。 (g ++在clang ++不會發出警告)。
這似乎是與[本問題]中報告的問題相同的問題(http://stackoverflow.com/questions/25311512/specialization-of-template-in-different-namespace)。 – nonsensickle 2017-04-27 10:36:04
[爲什麼不允許模板專門化在不同的名稱空間](http://stackoverflow.com/questions/3072248/why-arent-template-specializations-allowed-to-be-in-different-namespaces)可能也是有趣的。 – nonsensickle 2017-04-27 10:44:08