---
name: StageOutput
lang: cpp
domain: core
version: "1.0.0"
algebraic: product
definition: |
  struct StageOutput {
      std::vector<std::string>  cell_backing;
      std::vector<const char*>  cells;
      int                       rows;
      int                       cols;
      std::vector<std::string>  headers;
      std::vector<ColumnType>   types;
  };
description: "Output materializado de compute_stage. cell_backing posee strings nuevos (aggregations); cells es row-major de ptrs a backing o a in_cells original."
tags: [tql, stage, output, product-type]
uses_types: [ColumnType_cpp_core]
file_path: "cpp/functions/core/data_table_types.h"
---

## Notas

Lifetime: cell_backing es owner — cells solo es valido mientras StageOutput viva. Para passthrough (sin agregaciones), cells apunta a in_cells del caller (sin backing local).

Reservar capacidad upfront en cell_backing evita realloc que invalida punteros.
