# Binding C union in Fortran

**URL:** <https://fortran-lang.discourse.group/t/binding-c-union-in-fortran/9218>\
**Category:** Uncategorized\
**Created:** [February 15, 2025, 8:47am UTC](https://fortran-lang.discourse.group/t/binding-c-union-in-fortran/9218 "2025-02-15T08:47:20Z")\
**Posts on this page:** 1\
**Showing post:** 13

<div class="post-metadata">

**Author:** ![ivanpribec](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/ivanpribec/32/3290_2.png) [@ivanpribec](https://fortran-lang.discourse.group/u/ivanpribec)\
**Post date:** [February 23, 2025, 12:56pm UTC](https://fortran-lang.discourse.group/t/binding-c-union-in-fortran/9218/13 "2025-02-23T12:56:14Z")

</div>

> [@septc](#):
>
> (though I guess C does not specify any stack vs heap explicitly).

You can place unions or `std::variant` on the heap. A small example can be found here: [Japanese Subgroup GENERIC proposal - #20 by ivanpribec](https://fortran-lang.discourse.group/t/japanese-subgroup-generic-proposal/6539/20)

```auto
struct circle { float radius = 1.0; };
struct square { float width = 1.0; };

using shape = std::variant<circle,square>;

int main() {
    std::vector<shape> my_shapes;
    // ...

```

The `vector` container uses heap-allocated memory.

---

_[View the full topic](https://fortran-lang.discourse.group/t/binding-c-union-in-fortran/9218)._
