1. 05 May, 2019 1 commit
  2. 04 May, 2019 2 commits
  3. 02 May, 2019 1 commit
    • denchat's avatar
      Fix DLL visibility of explicit instantiation "declaration" of... · 29c10fbf
      denchat authored
      Fix DLL visibility of explicit instantiation "declaration" of internal::basic_data<void> in header format.h and the explicit instantiation "definition" in format.cc (#1134)
      
      * Update format.cc
      
      As the explicit instantiation *declaration* of `internal::basic_data<void>` in format.h, this explicit instantiation *definition* should mirror FMT_API also.
      
      * Mirror visibility of explicit instantiation declaration 
      
      explicit instantiation declaration of internal::basic_data<void> should mirror visibility of FMT_API
      
      * Eliminate `__declspec(dllexport)` designation on extern template internal::basic_data<> when `extern` affected during exporting phase.
      
      * Add `FMT_EXTERN_TEMPLATE_API` for designate DLL export `extern template`
      
      When exporting DLL, do not designate `__declspec(dllexport)` any template that has any explicit class template declaration a.k.a. `extern template`. Instead, designate `__declspec(dllexport)` at single point where we have explicit class template definition a.k.a. normal instantiation without `extern`
      
      Note: this is a c++11 feature.
      
      * Delete whole `FMT_USE_EXTERN_TEMPLATES` block and its condition
      
      1. Remove whole `FMT_USE_EXTERN_TEMPLATES` block
      (trailing `FMT_UDL_TEMPLATE` block)
      ````
      #ifndef FMT_USE_EXTERN_TEMPLATES
      #  ifndef FMT_HEADER_ONLY
      #    define FMT_USE_EXTERN_TEMPLATES                           \
            ((FMT_CLANG_VERSION >= 209 && __cplusplus >= 201103L) || \
             (FMT_GCC_VERSION >= 303 && FMT_HAS_GXX_CXX11))
      #  else
      #    define FMT_USE_EXTERN_TEMPLATES 0
      #  endif
      #endif
      ````
      
      2. Delete `FMT_USE_EXTERN_TEMPLATES` condition, only condition, that trailing basic_data class template definition.
      ````
      #if FMT_USE_EXTERN_TEMPLATES
      extern template struct basic_data<void>;
      #endif
      ````
      
      3. Replace `FMT_API` with new `FMT_EXTERN_TEMPLATE_API` added in `core.h` for sake of extern template of `basic_data<void>`
      
      * Add `#define FMT_EXTERN extern` only when not `FMT_HEADER_ONLY`
      
      * Replace `extern` on basic_data<void> with the `FMT_EXTERN` condition in core.h
      
      * replace misspelled if !define() with ifndef
      29c10fbf
  4. 01 May, 2019 1 commit
  5. 28 Apr, 2019 3 commits
  6. 27 Apr, 2019 4 commits
  7. 21 Apr, 2019 1 commit
  8. 20 Apr, 2019 1 commit
  9. 19 Apr, 2019 1 commit
  10. 18 Apr, 2019 1 commit
  11. 17 Apr, 2019 3 commits
  12. 15 Apr, 2019 2 commits
  13. 14 Apr, 2019 1 commit
  14. 13 Apr, 2019 3 commits
  15. 12 Apr, 2019 3 commits
  16. 11 Apr, 2019 1 commit
  17. 10 Apr, 2019 4 commits
  18. 09 Apr, 2019 1 commit
  19. 08 Apr, 2019 2 commits
  20. 07 Apr, 2019 3 commits
  21. 06 Apr, 2019 1 commit