// PR c++/15867
// { dg-options -Wredundant-decls }

template <typename T> struct S
{  
  void foo() {}          
};  

template<> void S<int>::foo();

template<> void S<double>::foo();  // { dg-message "previous declaration" }
template<> void S<double>::foo();  // { dg-warning "redundant redeclaration" }
