#include <utility>
#include <iostream>

void foo(const std::pair<const char*, std::size_t>& p)
{
    std::cout << "pair" << std::endl;
}

template <class T>
void foo(const T& v)
{
    std::cout << "generic" << std::endl;
}

int main()
{
    const char* s = "abc";
    foo(std::make_pair(s, std::size_t(3)));
    return 0;
}