#include <iostream>
static void
myStandardPointer(const ImageType *)
{}
static void
mySmartPointer(const ImageType::Pointer)
{}
template <typename TImage>
static void
TemplateSmartPointer(const typename TImage::Pointer)
{}
template <typename TImage>
static void
TemplateStandardPointer(const TImage *)
{}
int
main(int, char *[])
{
ImageType::Pointer image = ImageType::New();
image->SetRegions(region);
image->Allocate();
myStandardPointer(image.GetPointer());
myStandardPointer(image);
mySmartPointer(image.GetPointer());
mySmartPointer(image);
return 0;
}