我有一个 CRTP 类,在重构期间为了 API 清晰,我想要一个包含方法的命名匿名结构,而不是让所有方法都在类范围内。问题是,这些方法需要访问外部范围。例如:
template<typename T>
class sample_class {
public:
struct {
void do_something() {
auto& result = get_ref().something_else(); //get_ref() out of inner struct scope
...
}
} inner;
private:
T& get_ref() { return static_cast<T&>(*this); }
};
有什么技术可以使这项工作吗?特别是 C++14 和 gcc7,因为我不相信匿名结构在技术上符合标准。