如何使用"使用"功能?

use*_*020 6 c++ using c++11

如何使用"使用"功能?例如

class A;
void f(int);

struct B
{
   using BA = A;
   using Bf = f; ???
};
Run Code Online (Sandbox Code Playgroud)

Nir*_*man 11

你可以做

struct B
{
   using BA = A;
   constexpr static auto Bf = f;
}
Run Code Online (Sandbox Code Playgroud)

这样你就不必担心指定类型了,这可能很烦人.

您不希望声明非静态变量,否则对象的每个副本都将携带一个函数指针.你也不希望它是可变的,因为那样你就可以重新分配它.您也不希望它在运行时可能被确定,因为编译器必须在给定的上下文中向自己证明调用Bf是真正调用的f,否则支付函数间接成本.在constexpr处理这些最后两分.