dimanche 23 août 2015

difference between array pointer to array reference [duplicate]

This question already has an answer here:

I want to write a function which distinguish between arrays and pointers. This is needed in order to figure size of literal strings. I tried:

template<typename Ty>
void f(const Ty* rhs) {
    std::cout << __FUNCTION__ << rhs << std::endl;
}

template<typename Ty, size_t Dm>
void f(const Ty(&rhs)[Dm]) {
    std::cout << __FUNCTION__ << rhs << std::endl;
}

int main(int, char*[]) {
    const char arr0[] = "test2";
    const char* ptr = "test3";
    const char arr6[6] = "test4";
    f("test1");
    f(arr0);
    f(ptr);
    f(arr6);
    return 0;
}

But the compiler (VS2013) tells me that the call is ambiguous. Any hints?

Thanks in advance.

Aucun commentaire:

Enregistrer un commentaire