After thinking about it I don’t think my question makes sense- meta is only needed for applies and not all column assignments. So you could do this if you where using an apply inside assign:
df.assign(c=df.apply(
lambda row: row["a"].astype(str) + row["b"],
axis=1,
meta=("c", str),
))