使用 Objective-C++,我可以写一个 C++IsObjectiveCClass<T>
模板元函数使得IsObjectiveCClass<T>::value
当且仅当 T 是 Objective-C 类时才为真?
从语言的 C/C++ 子集的角度来看,ObjC 类到底是什么?当在 C / C++ 上下文中使用时,MyClass* 指针的行为似乎与普通 C 指针相似;这是否意味着 MyClass 也是 C 类型?
这是一个简单的解决方案,应该适用于大多数(如果不是全部?有人能想到什么时候可能会失败吗?)情况(它通过 xcode 4.2 使用 clang 3.0 - 使用 typedef 而不是使用早期 clang 版本的别名):
template<class T> struct IsObjectiveCClass
{
using yesT = char (&)[10];
using noT = char (&)[1];
static yesT choose(id);
static noT choose(...);
static T make();
enum { value = sizeof(choose(make())) == sizeof(yesT) };
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)