Temporary header file '/tmp/rMTKvL3Lj9/dump1.h' with the following content will be compiled to create GCC translation unit dump:

  // add defines
  #define __STDC_VERSION__ 201710L
#define _GXX_NULLPTR_T
#define CLUTTER_ENABLE_COMPOSITOR_API 1
#define _REGEX_NELTS(n)
#define _Atomic
#define PACKED
#define getaddrinfo_a(a,b,c,d)

  // add includes
  #include "/usr/include/smartcardpp/CardBase.h"
  #include "/usr/include/smartcardpp/DynamicLibrary.h"
  #include "/usr/include/smartcardpp/ManagerInterface.h"
  #include "/usr/include/smartcardpp/PCSCManager.h"
  #include "/usr/include/smartcardpp/PinString.h"
  #include "/usr/include/smartcardpp/SCError.h"
  #include "/usr/include/smartcardpp/esteid/EstEidCard.h"
  #include "/usr/include/smartcardpp/locked_allocator.h"
  #include "/usr/include/smartcardpp/smartcardpp.h"
  #include "/usr/include/smartcardpp/types.h"

  // add classes
  AuthError* tmp_add_class_0;
  CardBase* tmp_add_class_1;
  CardDataError* tmp_add_class_2;
  CardError* tmp_add_class_3;
  ConnectionBase* tmp_add_class_4;
  DynamicLibrary* tmp_add_class_5;
  EstEidCard* tmp_add_class_6;
  ManagerInterface* tmp_add_class_7;
  PCSCConnection* tmp_add_class_8;
  PCSCManager* tmp_add_class_9;
  PinString* tmp_add_class_10;
  SCError* tmp_add_class_11;
  Transaction* tmp_add_class_12;
  _G_fpos64_t* tmp_add_class_13;
  _G_fpos_t* tmp_add_class_14;
  _IO_cookie_io_functions_t* tmp_add_class_15;
  cmsghdr* tmp_add_class_16;
  group_filter* tmp_add_class_17;
  group_req* tmp_add_class_18;
  group_source_req* tmp_add_class_19;
  in6_addr* tmp_add_class_20;
  in6_pktinfo* tmp_add_class_21;
  in_addr* tmp_add_class_22;
  in_pktinfo* tmp_add_class_23;
  iovec* tmp_add_class_24;
  ip6_mtuinfo* tmp_add_class_25;
  ip_mreq* tmp_add_class_26;
  ip_mreq_source* tmp_add_class_27;
  ip_mreqn* tmp_add_class_28;
  ip_msfilter* tmp_add_class_29;
  ip_opts* tmp_add_class_30;
  ipv6_mreq* tmp_add_class_31;
  linger* tmp_add_class_32;
  mmsghdr* tmp_add_class_33;
  msghdr* tmp_add_class_34;
  osockaddr* tmp_add_class_35;
  sockaddr* tmp_add_class_36;
  sockaddr_in* tmp_add_class_37;
  sockaddr_in6* tmp_add_class_38;
  sockaddr_storage* tmp_add_class_39;
  ucred* tmp_add_class_40;

The GCC parameters:
  gcc -fdump-lang-raw -fkeep-inline-functions -c -x c++ -fpermissive -w "/tmp/rMTKvL3Lj9/dump1.h"  -I/usr/include/PCSC

In file included from /usr/include/smartcardpp/esteid/../PinString.h:13,
                 from /usr/include/smartcardpp/esteid/EstEidCard.h:16,
                 from /tmp/rMTKvL3Lj9/dump1.h:18:
/usr/include/smartcardpp/esteid/../locked_allocator.h:19:18: error: redefinition of ‘class locked_allocator<void>’
   19 | template <>class locked_allocator<void> {
      |                  ^~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/smartcardpp/PinString.h:13,
                 from /tmp/rMTKvL3Lj9/dump1.h:16:
/usr/include/smartcardpp/locked_allocator.h:19:18: note: previous definition of ‘class locked_allocator<void>’
   19 | template <>class locked_allocator<void> {
      |                  ^~~~~~~~~~~~~~~~~~~~~~
/usr/include/smartcardpp/esteid/../locked_allocator.h:39:7: error: redefinition of ‘class locked_allocator<T>’
   39 | class locked_allocator
      |       ^~~~~~~~~~~~~~~~
/usr/include/smartcardpp/locked_allocator.h:39:7: note: previous definition of ‘class locked_allocator<T>’
   39 | class locked_allocator
      |       ^~~~~~~~~~~~~~~~
/usr/include/smartcardpp/esteid/../locked_allocator.h:103:6: error: redefinition of ‘template<class T> bool operator==(const locked_allocator<U>&, const locked_allocator<U>&)’
  103 | bool operator==(const locked_allocator<T> &,const locked_allocator<T> &) { return true;}
      |      ^~~~~~~~
/usr/include/smartcardpp/locked_allocator.h:103:6: note: ‘template<class T> bool operator==(const locked_allocator<U>&, const locked_allocator<U>&)’ previously declared here
  103 | bool operator==(const locked_allocator<T> &,const locked_allocator<T> &) { return true;}
      |      ^~~~~~~~
/usr/include/smartcardpp/esteid/../locked_allocator.h:105:6: error: redefinition of ‘template<class T> bool operator!=(const locked_allocator<U>&, const locked_allocator<U>&)’
  105 | bool operator!=(const locked_allocator<T> &,const locked_allocator<T> &) { return false;}
      |      ^~~~~~~~
/usr/include/smartcardpp/locked_allocator.h:105:6: note: ‘template<class T> bool operator!=(const locked_allocator<U>&, const locked_allocator<U>&)’ previously declared here
  105 | bool operator!=(const locked_allocator<T> &,const locked_allocator<T> &) { return false;}
      |      ^~~~~~~~
/usr/include/smartcardpp/esteid/../PinString.h:19:7: error: redefinition of ‘class PinString’
   19 | class PinString : public base_str {
      |       ^~~~~~~~~
/usr/include/smartcardpp/PinString.h:19:7: note: previous definition of ‘class PinString’
   19 | class PinString : public base_str {
      |       ^~~~~~~~~
In file included from /tmp/rMTKvL3Lj9/dump1.h:19:
/usr/include/smartcardpp/locked_allocator.h:19:18: error: redefinition of ‘class locked_allocator<void>’
   19 | template <>class locked_allocator<void> {
      |                  ^~~~~~~~~~~~~~~~~~~~~~
/usr/include/smartcardpp/locked_allocator.h:19:18: note: previous definition of ‘class locked_allocator<void>’
   19 | template <>class locked_allocator<void> {
      |                  ^~~~~~~~~~~~~~~~~~~~~~
/usr/include/smartcardpp/locked_allocator.h:39:7: error: redefinition of ‘class locked_allocator<T>’
   39 | class locked_allocator
      |       ^~~~~~~~~~~~~~~~
/usr/include/smartcardpp/locked_allocator.h:39:7: note: previous definition of ‘class locked_allocator<T>’
   39 | class locked_allocator
      |       ^~~~~~~~~~~~~~~~
/usr/include/smartcardpp/locked_allocator.h:103:6: error: redefinition of ‘template<class T> bool operator==(const locked_allocator<U>&, const locked_allocator<U>&)’
  103 | bool operator==(const locked_allocator<T> &,const locked_allocator<T> &) { return true;}
      |      ^~~~~~~~
/usr/include/smartcardpp/locked_allocator.h:103:6: note: ‘template<class T> bool operator==(const locked_allocator<U>&, const locked_allocator<U>&)’ previously declared here
  103 | bool operator==(const locked_allocator<T> &,const locked_allocator<T> &) { return true;}
      |      ^~~~~~~~
/usr/include/smartcardpp/locked_allocator.h:105:6: error: redefinition of ‘template<class T> bool operator!=(const locked_allocator<U>&, const locked_allocator<U>&)’
  105 | bool operator!=(const locked_allocator<T> &,const locked_allocator<T> &) { return false;}
      |      ^~~~~~~~
/usr/include/smartcardpp/locked_allocator.h:105:6: note: ‘template<class T> bool operator!=(const locked_allocator<U>&, const locked_allocator<U>&)’ previously declared here
  105 | bool operator!=(const locked_allocator<T> &,const locked_allocator<T> &) { return false;}
      |      ^~~~~~~~

