我偶然形成了一个很好的面试问题。 :)
template<typename T>
bool foo (T obj)
{
if(typeid(T) == typeid(obj))
return false;
return true; // <-- execute this
}
您必须以这样的方式致电(仅限上述)foo()
,以便返回true
。条件是,
foo()
或typeid
#define
答案 0 :(得分:11)
#include <cassert>
struct B { virtual ~B() {} };
int main()
{
struct : B {} x;
assert(foo<B&>(x));
}
行动是over there。
答案 1 :(得分:2)
int main ()
{
typedef char C[1];
foo<C>(0); // returns true;
}
请参阅this question以了解此答案的解释和此问题的根源。