You can, but the point is that you shouldn't have to because there are enough addresses. NAT only makes networking code for applications harder.
Sure, you absolutely need a stateful firewall, but not needing address translation makes it easier to troubleshoot, makes it easier to establish end to end connectivity and no need to port forward or things of that nature so multiple clients can all use the same port.
* https://en.wikipedia.org/wiki/STUN
* https://en.wikipedia.org/wiki/Traversal_Using_Relays_around_...
* https://en.wikipedia.org/wiki/Interactive_Connectivity_Estab...
Not sure if that's more or less complicated than already knowing your IP address and 'just' using UPnP/PCP: