Я играю со своим классом интеллектуальных указателей и хочу реализовать операторы ++ и - со следующим поведением: если указатель указывает на одну переменную или если он указывает на массив, а ++ (-) перемещает указатель из массива Bounds исключение должно быть выдано при попытке ++ (-).
Примерно так:
class A;
SmartPtr<A> s(new A[3]);
SmartPtr<A> s1(new A());
++s;//ok
--s;//ok
--s;//exception OutOfBounds thrown
++s1;//exception OutOfBounds thrown
--s1;//exception OutOfBounds thrown
Я пытался использовать typeid. Но он все равно возвращает тип.
A* arr=new A[3];
typeid(arr).name();//type is P1A
typeid(--arr).name();//type is P1A
typeid(arr+7).name();//type is P1A
Так есть ли способ определить, указывает ли указатель на объект типа "мой" после ++ (-)?