You don’t actually need C++14 to run into problems with this; even in C++98 you can have situations where something can be instantiated multiple times but needs to have a unique address across the whole program. This is known as “vague linkage”. Here’s a good post about the phenomenon and how it adds work for the dynamic linker:
https://ridiculousfish.com/blog/posts/i-didnt-order-that-so-why-is-it-on-my-bill-episode-1.html
On Linux (and other ELF systems) and Darwin, the dynamic linker properly uniques such symbols across dynamic libraries, despite the added cost, using so-called weak linking. Windows doesn’t bother, unless you manually mark one instantiation as dllexport and the others as dllimport.