Суть вопроса, есть некая шаблонная функция my_set(dest, src), и хочу что бы она выполнялась как при передачи параметров по указателю, так и при непосредственном указании. Нужно что бы при любом указании все сводилось к выполнению с указателями на значения. Именно с указателями, т.к. там у меня еще работа с packed полями, а они капризничают при передачи по амперсанду.
template <class D, class S>
void my_set(D& dest, const S& src) {
my_set(&dest, &src);
}
template <class D, class S>
void my_set(D* dest, const S& src) {
my_set(dest, &src);
}
template <class D, class S>
void my_set(D& dest, const S* src) {
my_set(&dest, src);
}
template <class D, class S>
void my_set(D* dest, const S* src) {
// все должно свестись к этому выполнению.
*dest = (D)*src;
}
Тут я написал вроде верно, но оно все лезут разные ошибки. В частности эта реализация не выполниться на этом примере:
int sz1 = 1;
short sz2;
my_set(sz2, &sz1);