Some MSVC-specific behavior: When class fmt::ostream inherits detail::buffer - the last gets implicitly exported when fmt is built as a shared library. Unless os.h is included, the compiler assumes detail::buffer is not externally exported and instantiates a local copy of it, which causes ODR violation. With aggregation - there is no extra exporting of detail::buffer symbols. |
||
|---|---|---|
| .. | ||
| fmt.cc | ||
| format.cc | ||
| os.cc | ||