std::unique_ptr<std::remove_pointer<CFURLRef>::type, decltype(&CFRelease)> file(CFURLCreateFromFileSystemRepresentation(nullptr,
reinterpret_cast<const unsigned char*>(filename.c_str()),
filename.length(),
false),
CFRelease);
std::unique_ptr<std::remove_pointer<decltype(CFURLCreateFromFileSystemRepresentation(std::declval<CFAllocatorRef>(), std::declval<const unsigned char*>(), std::declval<CFIndex>(), std::declval<bool>()))>::type, decltype(&CFRelease)> file{CFURLCreateFromFileSystemRepresentation(nullptr,
reinterpret_cast<const unsigned char*>(filename.c_str()),
filename.length(),
false),
CFRelease};