Quantcast
Channel: GameDev.net
Viewing all articles
Browse latest Browse all 17825

Char pointer/array type ambiguity

$
0
0
So I'm trying to design a function that acts differently, based on whether it is passed a const char/wchar_t array, or a const char/wchar_t*: template<typename Char, size_t Length> size_t stringLength(const Char(&pString)[Length]) { return Length - 1; } template<typename Char> size_t stringLength(const Char* pType) { return strlen(pType); } const char* pTest = "Test"; stringLength(pTest); // => should return 4 stringLength("Test"); // => should return 4 as well The problem is that the last line doesn't compile, saying that the function-call is ambigous between both overloads, even though it correctly identifies the argument as "const char [8]", which works as intended if I remove the "const Char* pType" overload. Now, why is this ambigous? As far as I understand it, the upper function should be a closer match to the argument list and thus be selected. Is there anything I have to/can do to make that work? (I'm on MSVC 2017)

Viewing all articles
Browse latest Browse all 17825

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>