Что обозначает такое создание обьекта: SmartPointer sp? Пишу код по видео уроку, класс умных указателей. Не понимаю, что за определение обьекта такое: SmartPointer sp(new Foo(2,2)); для чего здесь <> скобки? И еще, как указатель может быть void: std::ptrdiff_t operator -(void *p) это что, ссылка на ничего? Поясните, пожалуйста значение <> скобок. Вот код:#include template class SmartPointer { Type* pointer; public: SmartPointer(Type* p) : pointer(p) {}; operator Type*() { return pointer; }; Type *operator->() { if (!pointer) { pointer = new Type(); std::cerr p) { return pointer - p; } std::ptrdiff_t operator -(void *p) { return pointer - p; } }; class Foo { int a, b; public: Foo() : a(0), b(0) {}; Foo(int a, int b) : a(a), b(b) {}; int sum() { return a + b; } }; int main(int argc, char **argv) { SmartPointer sp(new Foo(2,2)); std::cout sum() >void"); }