Template argument deduction: which compiler is right here?
问题 Consider the following code: template<int N> class Vector { }; #include <array> template<int N> void doWork(const Vector<N>&, const std::array<int,N>&) { } int main() { std::array<int,3> arr; Vector<3> vec; doWork(vec,arr); } Here Vector represents a class which is defined in a third-party library, and std::array is known to take its element count as std::size_t . I've tried compiling this with clang-3.6 and g++-5.1. Clang worked without any complaint, while g++ gives the following error: