【发布时间】:2019-05-20 21:01:58
【问题描述】:
标准库提供了很多有用的"is" typetraits 来说明两个类的关系,例如is_base_of、is_convertible、is_same 等。有什么方法可以实现一个typetrait is_friend 到判断A班是否是B班的朋友?
示例代码:
class A {};
class B { friend class A; };
class C { friend class B; };
is_friend<A, B>; // true
is_friend<B, A>; // false
is_friend<B, C>; // true
is_friend<A, C>; // false
【问题讨论】:
-
我不知道,但既然朋友是编译器的提示,那有什么意义呢? AFAIK,它不会生成任何代码。
-
我已经实现了这样的东西 -> stackoverflow.com/a/11748131/2565020 检查一个类是否是可反射的,而不是检查成员/函数的存在或创建一个标志,我认为它会更漂亮检查反射类是否是
reflector的朋友 -
@Nighteen 可能是 this 在某种程度上是有帮助的。
-
有什么用例吗?
标签: c++ friend typetraits