मैं निम्नलिखित कोड है:प्लस सूचक अधिक भार टेम्पलेट सूचक को
template<class A, class B>
void test(A& a, const B* b)
{ std::cout << "hi" << std::endl; }
template<class A, class B>
void test(A& a, const B** b)
{ std::cout << "hello" << std::endl; }
class TestClass
{};
int main()
{
int a = 5;
TestClass b;
TestClass* c = &b;
test(a, &c);
return 0;
}
किसी तरह उत्पादन "हाय" हालांकि ऐसा लगता है कि बेहतर मैच दूसरा टेम्पलेट समारोह होगा। जब मैं const
एस को क्वालीफायर के रूप में B*
और B**
पर हटा देता हूं तो मुझे "हैलो" मिलता है जो दूसरे टेम्पलेट फ़ंक्शन से मेल खाता है। संकलक इस मामले में कॉल करने के लिए फ़ंक्शन का चयन कैसे करता है? धन्यवाद!