Şu anda bir şablon şöyle var:Şablonlu işaretçiyi bir işleve ayırmanın bir yolu var mı?
template<typename func, typename ret, typename... args> class Entry{
public:
PVOID Address;
ret operator()(args...){
return ((func) this->Address)(args...);
}
};
Ve böyle kullanıyorum:
Entry<int(*)(int), int, int> func;
// ^func ^ret ^args
func.Address = (PVOID) 0xDEADC0DE;
func(123); // calls 0xDEADC0DE with '123' as argument
Ancak, acaba eğer mümkünse sadece bu var:
Entry<int(*)(int)> func;
// ^only specifying the function's prototype once instead of breaking it down
func(123);
Eğer böyle bir şeye sahip olsaydım, operator()
'u aşırı yükleyemedim, çünkü işlev işaretçi türünü argümanlara ve dönüş türüne göre ayırmam mümkün değil. return_type operator()(args...)
yazınız).
Bunu başarmanın bir yolu var mı? Ben VS2013 Kas kullanıyorum
2013 CTP
Böyle bir uzmanlaşma ile bunu yapabilir
"void *" işlev göstergelerini depolamanın teknik bir sorunu olduğunu düşündüm? Kesinlikle herhangi bir platformda VS2013 hedefleri, itiraf ediyorum. – Yakk
@Yakk, fonksiyon göstergelerinin boyutundan dolayı olabilir (normal bir işaretçiden çok daha büyük olabilir), ancak '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'fonksiyonunu yapmıyorum. Herhangi bir zarar vermemesi gereken – rev