Я хочу сгенерировать код для вектора на основе кода в лямбде.Я думаю, может быть, есть способ сделать это с constexpr, но я думаю, что это потребует чего-то особенно умного.Нечто подобное this кажется уместным, но способ, которым я хочу его генерировать, более непрозрачен, чем предусмотренный.Пример кода прояснит это:
Рассмотрим:
auto a = [&]() {
if(!mem_retire_port->empty() && occupied) {
auto addr = mem_retire_port->peek()->data.addr;
if(addr == insns[idx]->ws.pc) {
occupied = false;
mem_retire_port->pop();
insn_decode_port->push(new insn_decode_event_t(insns[idx]));
idx = (idx + 1) % insns.size();
}
}
});
Я хочу сгенерировать std :: vector вида
std::vector<std::function<std::string()>> generated_vector = {mem_retire_port->get_name, insn_decode_port->get_name};
Эта информация очевиднодоступно для программиста, но мне было интересно, можно ли это определить программно во время компиляции.Может быть, constexpr на operator-> или что-то, чтобы определить, находится ли переменная в лямбде или нет.
Этот вопрос больше касается урегулирования моего любопытства, чем предоставления идеального решения.Я просто подумал, что было бы интересно посмотреть, можно ли это сделать.