Я хотел бы различать статические массивы и указатели.
Следующий пример не удается скомпилировать из-за конверсий между массивами и указателями с точным соответствием, что делает как foo
возможных кандидатов.
Могу ли я получить 2-ю перегрузку foo
для однозначного выбора с использованием свойств типа?
#include <iostream>
template<typename T>
void foo(const T* str)
{
std::cout << "ptr: " << str << std::endl;
}
template<typename T, size_t N>
void foo(const T (&str)[N])
{
std::cout << "arr: " << str << std::endl;
}
int main()
{
foo("hello world"); // I would like the array version to be selected
return 0;
}