Bonjour,
Voici un petit code tout simple qui ne compile pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template<class Chr>
void pointer_or_array(Chr const *rs)
{
	std::cout << rs << " size: ?" << std::endl;
}
 
template<class Chr, size_t Rswz>
void pointer_or_array(Chr const (&rs)[Rswz])
{
	std::cout << rs << " size: " << Rswz << std::endl;
}
 
int main()
{
	pointer_or_array("abc");//<- erreur ici pour cause d'ambiguïté
	char const *abc = "abc";
	pointer_or_array(abc);
	return 0;
]
J'aurais pourtant cru que les signatures étaient différentes et que les "string literal" étaient de type "character array" et non de type "character pointer".
Comment donc résoudre cette ambiguïté ?
Merci !