从引用生命周期、边界情况和多余工作角度审查这段生成的注册表。
提供显示名称、搜索已有名称,并为第一个名称排入回调。
C++
#include <functional>
#include <string>
#include <vector>
using Callback = std::function<void()>;
class Registry {
public:
const std::string& display_name(std::string fallback) const {
if (names_.empty()) return fallback;
return names_.front();
}
bool contains(const std::string& needle) const {
for (std::string name : names_) {
if (name == needle) return true;
}
return false;
}
void schedule_first(std::vector<Callback>& pending) {
const std::string& name = names_.front();
pending.push_back([this, &name] { use(name); });
}
private:
void use(const std::string&) const;
std::vector<std::string> names_;
};
生成代码仅作示例,不代表任何特定模型