Voici un petit code
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
20
template<class T>
struct capsule
{
	T i_;
	capsule(T i=5): i_(i) {}
	operator T *()
		{ return &i_; }
};
 
template<class T> inline
void display_by_ptr(T * p)
{ std::cout << *p << std::end; }
 
 
int main()
{
	capsule<int> c;
	int *pi=c; // OK
	display_by_ptr(c); // pas OK
}
Et voici le message d'erreur du compilateur (VS2010)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
'void display_by_ptr(T *)' :
 could not deduce template argument for 'T *' from 'capsule<T>'
Sachant qu'il n'est pas possible de changer display_by_ptr(), comment corriger/compléter la structure capsule<> pour que ça fonctionne ?
Là, je sèche...
Merci.