如何使用"使用"功能?例如
class A; void f(int); struct B { using BA = A; using Bf = f; ??? };
Nir Friedman.. 11
你可以做
struct B { using BA = A; constexpr static auto Bf = f; }
这样你就不必担心指定类型了,这可能很烦人.
您不希望声明非静态变量,否则对象的每个副本都将携带一个函数指针.你也不希望它是可变的,因为那样你就可以重新分配它.您也不希望它在运行时可能被确定,因为编译器必须在给定的上下文中向自己证明调用Bf
是真正调用的f
,否则支付函数间接成本.在constexpr
处理这些最后两分.
你可以做
struct B { using BA = A; constexpr static auto Bf = f; }
这样你就不必担心指定类型了,这可能很烦人.
您不希望声明非静态变量,否则对象的每个副本都将携带一个函数指针.你也不希望它是可变的,因为那样你就可以重新分配它.您也不希望它在运行时可能被确定,因为编译器必须在给定的上下文中向自己证明调用Bf
是真正调用的f
,否则支付函数间接成本.在constexpr
处理这些最后两分.