审查一段生成的注册表

来自 引用
C++23 (GCC 13.3.0) 高级 8分钟 找出 4处问题

从引用生命周期、边界情况和多余工作角度审查这段生成的注册表。

提供显示名称、搜索已有名称,并为第一个名称排入回调。

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_;
};

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误