// REQUIRED_ARGS: -de
struct S
{
    deprecated void foo(T)(int) { }
    void foo(T)(string) { }
}
// just to be safe, check this order too
// (there were some issues where naive checks of overloads were order dependent)
struct T
{
    void foo(T)(string) { }
    deprecated void foo(T)(int) { }
}
void main()
{
    // this should not hit the deprecation
    // because the parameter type doesn't match it
    S().foo!int("hi");
    // likewise
    T().foo!int("hi");
}