我想要一种类似于闭包隐式执行的行为,将变量引入范围,而不必显式声明引用
示例结构
struct A{
T x;
void g();
};
行为效果,真实但不希望的语法
void f(){
A a;
T& x= a.x;
void(A::*g)()= &A::g; //method pointer; obvious why this is undesirable
//...
};
所需的不受支持的语法
void f(){
A a;
using a;
//invalid/unsupported use of keyword
}
void f(){
A a;
[&a]{
//...
//lambdas only bring members into scope for keyword this
}();
}
答案 0 :(得分:0)
这不是令人满意的,也不是读者友好的解决方案。显式声明引用比这样做要好得多。
但是,它只需要将变量明确地一次带入作用域即可。
牧马人的方法用作范围块。
struct wrangler{
T& a;
void(A::*g)()= &A::g;
void f(){
//...
}
}