sfxsfl před 8 měsíci
rodič
revize
29e9a92617
100 změnil soubory, kde provedl 2239 přidání a 0 odebrání
  1. binární
      An event mechanism for C++/.vs/An event mechanism for C++/CopilotIndices/17.13.444.19527/CodeChunks.db
  2. binární
      An event mechanism for C++/.vs/An event mechanism for C++/CopilotIndices/17.13.444.19527/SemanticSymbols.db
  3. binární
      An event mechanism for C++/.vs/An event mechanism for C++/FileContentIndex/256fcd40-7b77-4a72-bf1d-189441928629.vsidx
  4. binární
      An event mechanism for C++/.vs/An event mechanism for C++/v17/.suo
  5. binární
      An event mechanism for C++/.vs/An event mechanism for C++/v17/Browse.VC.db
  6. 45 0
      An event mechanism for C++/.vs/An event mechanism for C++/v17/DocumentLayout.backup.json
  7. 45 0
      An event mechanism for C++/.vs/An event mechanism for C++/v17/DocumentLayout.json
  8. binární
      An event mechanism for C++/.vs/An event mechanism for C++/v17/ipch/AutoPCH/9389cb1a7ae37dd3/AN EVENT MECHANISM FOR C++.ipch
  9. 31 0
      An event mechanism for C++/An event mechanism for C++.sln
  10. 108 0
      An event mechanism for C++/An event mechanism for C++/An event mechanism for C++.cpp
  11. 135 0
      An event mechanism for C++/An event mechanism for C++/An event mechanism for C++.vcxproj
  12. 22 0
      An event mechanism for C++/An event mechanism for C++/An event mechanism for C++.vcxproj.filters
  13. 4 0
      An event mechanism for C++/An event mechanism for C++/An event mechanism for C++.vcxproj.user
  14. 123 0
      An event mechanism for C++/An event mechanism for C++/x64/Debug/An event mechanism for C++.log
  15. 2 0
      An event mechanism for C++/An event mechanism for C++/x64/Debug/An event.55007c10.tlog/An event mechanism for C++.lastbuildstate
  16. 1 0
      An event mechanism for C++/An event mechanism for C++/x64/Debug/An event.55007c10.tlog/CL.command.1.tlog
  17. 0 0
      An event mechanism for C++/An event mechanism for C++/x64/Debug/An event.55007c10.tlog/unsuccessfulbuild
  18. binární
      An event mechanism for C++/An event mechanism for C++/x64/Debug/vc143.idb
  19. binární
      An event mechanism for C++/An event mechanism for C++/x64/Debug/vc143.pdb
  20. binární
      AnotherSignalSlot/.vs/AnotherSignalSlot/CopilotIndices/17.13.444.19527/CodeChunks.db
  21. binární
      AnotherSignalSlot/.vs/AnotherSignalSlot/CopilotIndices/17.13.444.19527/SemanticSymbols.db
  22. binární
      AnotherSignalSlot/.vs/AnotherSignalSlot/FileContentIndex/6294ff90-d403-4230-8f33-cb8c67e53f72.vsidx
  23. binární
      AnotherSignalSlot/.vs/AnotherSignalSlot/FileContentIndex/80b49f58-b3a7-490c-b742-6b1bc95c69fc.vsidx
  24. binární
      AnotherSignalSlot/.vs/AnotherSignalSlot/v17/.suo
  25. binární
      AnotherSignalSlot/.vs/AnotherSignalSlot/v17/Browse.VC.db
  26. 62 0
      AnotherSignalSlot/.vs/AnotherSignalSlot/v17/DocumentLayout.backup.json
  27. 62 0
      AnotherSignalSlot/.vs/AnotherSignalSlot/v17/DocumentLayout.json
  28. binární
      AnotherSignalSlot/.vs/AnotherSignalSlot/v17/ipch/AutoPCH/5c117234199fe919/ANOTHERSIGNALSLOT.ipch
  29. binární
      AnotherSignalSlot/.vs/AnotherSignalSlot/v17/ipch/AutoPCH/a6d0e20f7faad58a/ASS.ipch
  30. 31 0
      AnotherSignalSlot/AnotherSignalSlot.sln
  31. 73 0
      AnotherSignalSlot/AnotherSignalSlot/AnotherSignalSlot.cpp
  32. 138 0
      AnotherSignalSlot/AnotherSignalSlot/AnotherSignalSlot.vcxproj
  33. 27 0
      AnotherSignalSlot/AnotherSignalSlot/AnotherSignalSlot.vcxproj.filters
  34. 4 0
      AnotherSignalSlot/AnotherSignalSlot/AnotherSignalSlot.vcxproj.user
  35. 285 0
      AnotherSignalSlot/AnotherSignalSlot/ass.h
  36. 2 0
      AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherS.496c612b.tlog/AnotherSignalSlot.lastbuildstate
  37. binární
      AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherS.496c612b.tlog/CL.command.1.tlog
  38. binární
      AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherS.496c612b.tlog/CL.read.1.tlog
  39. binární
      AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherS.496c612b.tlog/CL.write.1.tlog
  40. 1 0
      AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherS.496c612b.tlog/Cl.items.tlog
  41. binární
      AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherS.496c612b.tlog/link.command.1.tlog
  42. binární
      AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherS.496c612b.tlog/link.read.1.tlog
  43. 2 0
      AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherS.496c612b.tlog/link.secondary.1.tlog
  44. binární
      AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherS.496c612b.tlog/link.write.1.tlog
  45. 11 0
      AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherSignalSlot.exe.recipe
  46. binární
      AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherSignalSlot.ilk
  47. 32 0
      AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherSignalSlot.log
  48. binární
      AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherSignalSlot.obj
  49. binární
      AnotherSignalSlot/AnotherSignalSlot/x64/Debug/vc143.idb
  50. binární
      AnotherSignalSlot/AnotherSignalSlot/x64/Debug/vc143.pdb
  51. 1 0
      AnotherSignalSlot/AnotherSignalSlot/x64/Debug/vcpkg.applocal.log
  52. binární
      AnotherSignalSlot/x64/Debug/AnotherSignalSlot.exe
  53. binární
      AnotherSignalSlot/x64/Debug/AnotherSignalSlot.pdb
  54. binární
      C++14 Event System/.vs/C++14 Event System/CopilotIndices/17.13.444.19527/CodeChunks.db
  55. binární
      C++14 Event System/.vs/C++14 Event System/CopilotIndices/17.13.444.19527/SemanticSymbols.db
  56. binární
      C++14 Event System/.vs/C++14 Event System/FileContentIndex/d3dddfcf-687f-4461-af11-7ba7116b7cda.vsidx
  57. binární
      C++14 Event System/.vs/C++14 Event System/v17/.suo
  58. binární
      C++14 Event System/.vs/C++14 Event System/v17/Browse.VC.db
  59. 45 0
      C++14 Event System/.vs/C++14 Event System/v17/DocumentLayout.backup.json
  60. 45 0
      C++14 Event System/.vs/C++14 Event System/v17/DocumentLayout.json
  61. binární
      C++14 Event System/.vs/C++14 Event System/v17/ipch/AutoPCH/21628301250f7187/C++14 EVENT SYSTEM.ipch
  62. 31 0
      C++14 Event System/C++14 Event System.sln
  63. 306 0
      C++14 Event System/C++14 Event System/C++14 Event System.cpp
  64. 135 0
      C++14 Event System/C++14 Event System/C++14 Event System.vcxproj
  65. 22 0
      C++14 Event System/C++14 Event System/C++14 Event System.vcxproj.filters
  66. 4 0
      C++14 Event System/C++14 Event System/C++14 Event System.vcxproj.user
  67. 2 0
      C++14 Event System/C++14 Event System/x64/Debug/C++14 Ev.205dccf0.tlog/C++14 Event System.lastbuildstate
  68. binární
      C++14 Event System/C++14 Event System/x64/Debug/C++14 Ev.205dccf0.tlog/CL.command.1.tlog
  69. binární
      C++14 Event System/C++14 Event System/x64/Debug/C++14 Ev.205dccf0.tlog/CL.read.1.tlog
  70. binární
      C++14 Event System/C++14 Event System/x64/Debug/C++14 Ev.205dccf0.tlog/CL.write.1.tlog
  71. 1 0
      C++14 Event System/C++14 Event System/x64/Debug/C++14 Ev.205dccf0.tlog/Cl.items.tlog
  72. binární
      C++14 Event System/C++14 Event System/x64/Debug/C++14 Ev.205dccf0.tlog/link.command.1.tlog
  73. binární
      C++14 Event System/C++14 Event System/x64/Debug/C++14 Ev.205dccf0.tlog/link.read.1.tlog
  74. 2 0
      C++14 Event System/C++14 Event System/x64/Debug/C++14 Ev.205dccf0.tlog/link.secondary.1.tlog
  75. binární
      C++14 Event System/C++14 Event System/x64/Debug/C++14 Ev.205dccf0.tlog/link.write.1.tlog
  76. 11 0
      C++14 Event System/C++14 Event System/x64/Debug/C++14 Event System.exe.recipe
  77. binární
      C++14 Event System/C++14 Event System/x64/Debug/C++14 Event System.ilk
  78. 46 0
      C++14 Event System/C++14 Event System/x64/Debug/C++14 Event System.log
  79. binární
      C++14 Event System/C++14 Event System/x64/Debug/C++14 Event System.obj
  80. binární
      C++14 Event System/C++14 Event System/x64/Debug/vc143.idb
  81. binární
      C++14 Event System/C++14 Event System/x64/Debug/vc143.pdb
  82. 1 0
      C++14 Event System/C++14 Event System/x64/Debug/vcpkg.applocal.log
  83. binární
      C++14 Event System/x64/Debug/C++14 Event System.exe
  84. binární
      C++14 Event System/x64/Debug/C++14 Event System.pdb
  85. binární
      CallbackFunctions/.vs/CallbackFunctions/CopilotIndices/17.13.444.19527/CodeChunks.db
  86. binární
      CallbackFunctions/.vs/CallbackFunctions/CopilotIndices/17.13.444.19527/SemanticSymbols.db
  87. binární
      CallbackFunctions/.vs/CallbackFunctions/FileContentIndex/4c873c62-1e57-464a-ab43-527b2f82aaca.vsidx
  88. binární
      CallbackFunctions/.vs/CallbackFunctions/v17/.suo
  89. binární
      CallbackFunctions/.vs/CallbackFunctions/v17/Browse.VC.db
  90. 45 0
      CallbackFunctions/.vs/CallbackFunctions/v17/DocumentLayout.backup.json
  91. 45 0
      CallbackFunctions/.vs/CallbackFunctions/v17/DocumentLayout.json
  92. binární
      CallbackFunctions/.vs/CallbackFunctions/v17/ipch/AutoPCH/4c9ac2e536700f/CALLBACKFUNCTIONS.ipch
  93. 31 0
      CallbackFunctions/CallbackFunctions.sln
  94. 59 0
      CallbackFunctions/CallbackFunctions/CallbackFunctions.cpp
  95. 135 0
      CallbackFunctions/CallbackFunctions/CallbackFunctions.vcxproj
  96. 22 0
      CallbackFunctions/CallbackFunctions/CallbackFunctions.vcxproj.filters
  97. 4 0
      CallbackFunctions/CallbackFunctions/CallbackFunctions.vcxproj.user
  98. binární
      CallbackFunctions/CallbackFunctions/x64/Debug/Callback.ae5deb1b.tlog/CL.command.1.tlog
  99. binární
      CallbackFunctions/CallbackFunctions/x64/Debug/Callback.ae5deb1b.tlog/CL.read.1.tlog
  100. binární
      CallbackFunctions/CallbackFunctions/x64/Debug/Callback.ae5deb1b.tlog/CL.write.1.tlog

binární
An event mechanism for C++/.vs/An event mechanism for C++/CopilotIndices/17.13.444.19527/CodeChunks.db


binární
An event mechanism for C++/.vs/An event mechanism for C++/CopilotIndices/17.13.444.19527/SemanticSymbols.db


binární
An event mechanism for C++/.vs/An event mechanism for C++/FileContentIndex/256fcd40-7b77-4a72-bf1d-189441928629.vsidx


binární
An event mechanism for C++/.vs/An event mechanism for C++/v17/.suo


binární
An event mechanism for C++/.vs/An event mechanism for C++/v17/Browse.VC.db


+ 45 - 0
An event mechanism for C++/.vs/An event mechanism for C++/v17/DocumentLayout.backup.json

@@ -0,0 +1,45 @@
+{
+  "Version": 1,
+  "WorkspaceRootPath": "C:\\Users\\wruser\\source\\repos\\An event mechanism for C\u002B\u002B\\",
+  "Documents": [
+    {
+      "AbsoluteMoniker": "D:0:0:{55007C10-A55C-4900-A85F-747108D590EB}|An event mechanism for C\u002B\u002B\\An event mechanism for C\u002B\u002B.vcxproj|C:\\Users\\wruser\\source\\repos\\An event mechanism for C\u002B\u002B\\An event mechanism for C\u002B\u002B\\An event mechanism for C\u002B\u002B.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
+      "RelativeMoniker": "D:0:0:{55007C10-A55C-4900-A85F-747108D590EB}|An event mechanism for C\u002B\u002B\\An event mechanism for C\u002B\u002B.vcxproj|solutionrelative:An event mechanism for C\u002B\u002B\\An event mechanism for C\u002B\u002B.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+    }
+  ],
+  "DocumentGroupContainers": [
+    {
+      "Orientation": 0,
+      "VerticalTabListWidth": 256,
+      "DocumentGroups": [
+        {
+          "DockedWidth": 200,
+          "SelectedChildIndex": 2,
+          "Children": [
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{3ae79031-e1bc-11d0-8f78-00a0c9110057}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{40ea2e6b-2121-4bb8-a43e-c83c04b51041}"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 0,
+              "Title": "An event mechanism for C\u002B\u002B.cpp",
+              "DocumentMoniker": "C:\\Users\\wruser\\source\\repos\\An event mechanism for C\u002B\u002B\\An event mechanism for C\u002B\u002B\\An event mechanism for C\u002B\u002B.cpp",
+              "RelativeDocumentMoniker": "An event mechanism for C\u002B\u002B\\An event mechanism for C\u002B\u002B.cpp",
+              "ToolTip": "C:\\Users\\wruser\\source\\repos\\An event mechanism for C\u002B\u002B\\An event mechanism for C\u002B\u002B\\An event mechanism for C\u002B\u002B.cpp*",
+              "RelativeToolTip": "An event mechanism for C\u002B\u002B\\An event mechanism for C\u002B\u002B.cpp*",
+              "ViewState": "AgIAAE0AAAAAAAAAAAAUwGsAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
+              "WhenOpened": "2025-05-05T08:43:20.395Z",
+              "EditorCaption": ""
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}

+ 45 - 0
An event mechanism for C++/.vs/An event mechanism for C++/v17/DocumentLayout.json

@@ -0,0 +1,45 @@
+{
+  "Version": 1,
+  "WorkspaceRootPath": "C:\\Users\\wruser\\source\\repos\\An event mechanism for C\u002B\u002B\\",
+  "Documents": [
+    {
+      "AbsoluteMoniker": "D:0:0:{55007C10-A55C-4900-A85F-747108D590EB}|An event mechanism for C\u002B\u002B\\An event mechanism for C\u002B\u002B.vcxproj|C:\\Users\\wruser\\source\\repos\\An event mechanism for C\u002B\u002B\\An event mechanism for C\u002B\u002B\\An event mechanism for C\u002B\u002B.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
+      "RelativeMoniker": "D:0:0:{55007C10-A55C-4900-A85F-747108D590EB}|An event mechanism for C\u002B\u002B\\An event mechanism for C\u002B\u002B.vcxproj|solutionrelative:An event mechanism for C\u002B\u002B\\An event mechanism for C\u002B\u002B.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+    }
+  ],
+  "DocumentGroupContainers": [
+    {
+      "Orientation": 0,
+      "VerticalTabListWidth": 256,
+      "DocumentGroups": [
+        {
+          "DockedWidth": 200,
+          "SelectedChildIndex": 2,
+          "Children": [
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{3ae79031-e1bc-11d0-8f78-00a0c9110057}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{40ea2e6b-2121-4bb8-a43e-c83c04b51041}"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 0,
+              "Title": "An event mechanism for C\u002B\u002B.cpp",
+              "DocumentMoniker": "C:\\Users\\wruser\\source\\repos\\An event mechanism for C\u002B\u002B\\An event mechanism for C\u002B\u002B\\An event mechanism for C\u002B\u002B.cpp",
+              "RelativeDocumentMoniker": "An event mechanism for C\u002B\u002B\\An event mechanism for C\u002B\u002B.cpp",
+              "ToolTip": "C:\\Users\\wruser\\source\\repos\\An event mechanism for C\u002B\u002B\\An event mechanism for C\u002B\u002B\\An event mechanism for C\u002B\u002B.cpp",
+              "RelativeToolTip": "An event mechanism for C\u002B\u002B\\An event mechanism for C\u002B\u002B.cpp",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAB8AAAAWAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
+              "WhenOpened": "2025-05-05T08:43:20.395Z",
+              "EditorCaption": ""
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}

binární
An event mechanism for C++/.vs/An event mechanism for C++/v17/ipch/AutoPCH/9389cb1a7ae37dd3/AN EVENT MECHANISM FOR C++.ipch


+ 31 - 0
An event mechanism for C++/An event mechanism for C++.sln

@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.13.35931.197 d17.13
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "An event mechanism for C++", "An event mechanism for C++\An event mechanism for C++.vcxproj", "{55007C10-A55C-4900-A85F-747108D590EB}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
+		Release|x64 = Release|x64
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{55007C10-A55C-4900-A85F-747108D590EB}.Debug|x64.ActiveCfg = Debug|x64
+		{55007C10-A55C-4900-A85F-747108D590EB}.Debug|x64.Build.0 = Debug|x64
+		{55007C10-A55C-4900-A85F-747108D590EB}.Debug|x86.ActiveCfg = Debug|Win32
+		{55007C10-A55C-4900-A85F-747108D590EB}.Debug|x86.Build.0 = Debug|Win32
+		{55007C10-A55C-4900-A85F-747108D590EB}.Release|x64.ActiveCfg = Release|x64
+		{55007C10-A55C-4900-A85F-747108D590EB}.Release|x64.Build.0 = Release|x64
+		{55007C10-A55C-4900-A85F-747108D590EB}.Release|x86.ActiveCfg = Release|Win32
+		{55007C10-A55C-4900-A85F-747108D590EB}.Release|x86.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {9A389DA5-48E5-4F22-A378-507B944C490F}
+	EndGlobalSection
+EndGlobal

+ 108 - 0
An event mechanism for C++/An event mechanism for C++/An event mechanism for C++.cpp

@@ -0,0 +1,108 @@
+// An event mechanism for C++.cpp : Diese Datei enthält die Funktion "main". Hier beginnt und endet die Ausführung des Programms.
+//
+
+#include <iostream>
+
+// delegate
+struct ISampleEventHandler : public IEventHandler
+{
+    virtual void callback(IUnknown* object, const SampleEventArgs& e) = 0;
+    typedef SampleEventArgs _EventArgs; // passive polymorphism using typedef
+};
+
+// event
+template<typename T>
+class Event
+{
+public:
+    void invoke(IUnknown* object, const EventArgs& e = EventArgs::Empty)
+    {
+        std::set<T*>::iterator iter;
+        for (iter = m_EventHandler.begin();
+            iter != m_EventHandler.end();
+            ++iter)
+        {
+            // this code can promise the type-safe callback because
+            // of the polymorphism using typedef in delegate
+            (*iter)->callback(object, static_cast<const T::_EventArgs&>(e));
+        }
+    }
+    void operator+=(T* eventHandler)
+    {
+        m_EventHandler.insert(eventHandler);
+    }
+
+    void operator-=(T* eventHandler)
+    {
+        m_EventHandler.erase(eventHandler);
+    }
+
+protected:
+    std::set<T*> m_EventHandler;
+};
+
+class IUnknown
+{
+public:
+    virtual ~IUnknown() {}
+    virtual std::string name() = 0;
+};
+
+class Callee : public IUnknown
+{
+public:
+    // declare the event.
+    Event<ISampleEventHandler> SampleEvent;
+public:
+    void test()
+    {
+        SampleEventArgs e;
+        e.sampleData = 10;
+        e.sampleData2 = 20;
+
+        // event occur.
+        SampleEvent.invoke(this, e);
+    }
+    std::string name() { return "callee"; }
+};
+
+class Caller : public IUnknown
+{
+public:
+    Caller()
+    {
+        // register Caller's inner class object to Callee.
+        m_Callee.SampleEvent += &sampleEventHandler;
+    }
+    ~Caller()
+    {
+        // unregister Caller's inner class object from Callee.
+        m_Callee.SampleEvent -= &sampleEventHandler;
+    }
+    void test()
+    {
+        m_Callee.test();
+    }
+private:
+    void print(IUnknown* object, const SampleEventArgs& e)
+    {
+        std::cout << object->name().c_str() << std::endl;
+        std::cout << e.sampleData << std::endl;
+        std::cout << e.sampleData2 << std::endl;
+    }
+    std::string name() { return "caller"; }
+private:
+    class SampleEventHandler : public ISampleEventHandler
+    {
+        void callback(IUnknown* object, const SampleEventArgs& e)
+        {
+            // to access outer class's member function.
+            Caller* outer = reinterpret_cast<Caller*>((char*)this -
+                offsetof(Caller, sampleEventHandler));
+
+            outer->print(object, e);
+        }
+    } sampleEventHandler;
+private:
+    Callee m_Callee;
+};

+ 135 - 0
An event mechanism for C++/An event mechanism for C++/An event mechanism for C++.vcxproj

@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <VCProjectVersion>17.0</VCProjectVersion>
+    <Keyword>Win32Proj</Keyword>
+    <ProjectGuid>{55007c10-a55c-4900-a85f-747108d590eb}</ProjectGuid>
+    <RootNamespace>AneventmechanismforC</RootNamespace>
+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v143</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v143</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v143</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v143</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="Shared">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="An event mechanism for C++.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 22 - 0
An event mechanism for C++/An event mechanism for C++/An event mechanism for C++.vcxproj.filters

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Quelldateien">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Headerdateien">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
+    </Filter>
+    <Filter Include="Ressourcendateien">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="An event mechanism for C++.cpp">
+      <Filter>Quelldateien</Filter>
+    </ClCompile>
+  </ItemGroup>
+</Project>

+ 4 - 0
An event mechanism for C++/An event mechanism for C++/An event mechanism for C++.vcxproj.user

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup />
+</Project>

+ 123 - 0
An event mechanism for C++/An event mechanism for C++/x64/Debug/An event mechanism for C++.log

@@ -0,0 +1,123 @@
+Der Buildvorgang wurde am 05.05.2025 10:45:28 gestartet.
+Die Ausführlichkeit der Protokollierung ist auf "Normal" festgelegt.     1>Projekt "C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.vcxproj" auf Knoten "2", Build Ziel(e).
+     1>PrepareForBuild:
+         Die strukturierte Ausgabe ist aktiviert. Die Formatierung der Compilerdiagnose spiegelt die Fehlerhierarchie wider. Weitere Informationen finden Sie unter https://aka.ms/cpp/structured-output.
+         Das Verzeichnis "C:\Users\wruser\source\repos\An event mechanism for C++\x64\Debug\" wird erstellt.
+         Das Verzeichnis "x64\Debug\An event.55007c10.tlog\" wird erstellt.
+       InitializeBuildStatus:
+         "x64\Debug\An event.55007c10.tlog\unsuccessfulbuild" wird erstellt, da "AlwaysCreate" angegeben wurde.
+         Aktualisieren des Timestamps von "x64\Debug\An event.55007c10.tlog\unsuccessfulbuild".
+       VcpkgTripletSelection:
+         Using triplet "x64-windows" from "C:\Users\wruser\source\repos\vcpkg\installed\x64-windows\"
+         Using normalized configuration "Debug"
+       ClCompile:
+         D:\Programme\VS2022\VC\Tools\MSVC\14.43.34808\bin\HostX64\x64\CL.exe /c /I"C:\Users\wruser\source\repos\vcpkg\installed\x64-windows\include" /ZI /JMC /nologo /W3 /WX- /diagnostics:column /sdl /Od /D _DEBUG /D _CONSOLE /D _UNICODE /D UNICODE /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /permissive- /Fo"x64\Debug\\" /Fd"x64\Debug\vc143.pdb" /external:W3 /Gd /TP /FC /errorReport:prompt "An event mechanism for C++.cpp"
+         An event mechanism for C++.cpp
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(7,37): error C2504: "IEventHandler": Basisklasse undefiniert
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(9,27): error C2061: Syntaxfehler: Bezeichner "IUnknown"
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(10,29): error C3646: "_EventArgs": Unbekannter Überschreibungsspezifizierer
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(10,13): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(18,17): error C2061: Syntaxfehler: Bezeichner "IUnknown"
+             C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(18,17):
+             der Vorlageninstanziierungskontext (der älteste zuerst) ist
+                 C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(15,7):
+                 beim Kompilieren der Klassenvorlage "Event"
+         
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(41,10): error C2039: "set" ist kein Member von "std".
+             D:\Programme\VS2022\VC\Tools\MSVC\14.43.34808\include\iostream(19,1):
+             Siehe Deklaration von "std"
+         
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(41,13): error C2143: Syntaxfehler: Es fehlt ";" vor "<"
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(41,10): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(41,32): error C2238: Unerwartete(s) Token vor ";"
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(20,19): error C3878: Syntaxfehler: Unerwartetes Token "*" nach "simple-type-specifier"
+             C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(20,19):
+             Es fehlt einer von: '(' '{' ?
+         
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(20,19): error C3878: Syntaxfehler: Unerwartetes Token "*" nach "expression"
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(21,14): error C2065: "iter": nichtdeklarierter Bezeichner
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(21,21): error C2065: "m_EventHandler": nichtdeklarierter Bezeichner
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(22,13): error C2065: "iter": nichtdeklarierter Bezeichner
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(22,21): error C2065: "m_EventHandler": nichtdeklarierter Bezeichner
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(23,15): error C2065: "iter": nichtdeklarierter Bezeichner
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(27,15): error C2065: "iter": nichtdeklarierter Bezeichner
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(27,31): error C2065: "object": nichtdeklarierter Bezeichner
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(27,73): error C2065: "e": nichtdeklarierter Bezeichner
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(32,9): error C3861: "m_EventHandler": Bezeichner wurde nicht gefunden.
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(32,9): error C2065: "m_EventHandler": nichtdeklarierter Bezeichner
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(37,9): error C3861: "m_EventHandler": Bezeichner wurde nicht gefunden.
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(37,9): error C2065: "m_EventHandler": nichtdeklarierter Bezeichner
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(18,35): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
+             C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(18,35):
+             der Vorlageninstanziierungskontext (der älteste zuerst) ist
+                 C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(55,32):
+                 Siehe Verweis auf die gerade kompilierte Klasse Vorlage-Instanziierung "Event<ISampleEventHandler>".
+         
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(18,50): error C2143: Syntaxfehler: Es fehlt "," vor "&"
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(59,9): error C2065: "SampleEventArgs": nichtdeklarierter Bezeichner
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(59,25): error C2146: Syntaxfehler: Fehlendes ";" vor Bezeichner "e"
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(59,25): error C2065: "e": nichtdeklarierter Bezeichner
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(60,9): error C2065: "e": nichtdeklarierter Bezeichner
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(61,9): error C2065: "e": nichtdeklarierter Bezeichner
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(64,34): error C2065: "e": nichtdeklarierter Bezeichner
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(87,34): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(87,55): error C2143: Syntaxfehler: Es fehlt "," vor "&"
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(105,7): error C2259: "Caller::SampleEventHandler": Abstrakte Klasse kann nicht erstellt werden.
+             C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(95,11):
+             Siehe Deklaration von "Caller::SampleEventHandler"
+             C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(105,7):
+             aufgrund folgender Member:
+             C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(105,7):
+             "void ISampleEventHandler::callback(void)": ist abstrakt
+             C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(9,18):
+             Siehe Deklaration von "ISampleEventHandler::callback"
+         
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(90,22): error C2065: "e": nichtdeklarierter Bezeichner
+     1>C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(91,22): error C2065: "e": nichtdeklarierter Bezeichner
+     1>Die Erstellung des Projekts "C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.vcxproj" ist abgeschlossen, Build Ziel(e) -- FEHLER.
+
+Fehler beim Buildvorgang.
+
+       "C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.vcxproj" (Build Ziel) (1) ->
+       (ClCompile Ziel) -> 
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(7,37): error C2504: "IEventHandler": Basisklasse undefiniert
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(9,27): error C2061: Syntaxfehler: Bezeichner "IUnknown"
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(10,29): error C3646: "_EventArgs": Unbekannter Überschreibungsspezifizierer
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(10,13): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(18,17): error C2061: Syntaxfehler: Bezeichner "IUnknown"
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(41,10): error C2039: "set" ist kein Member von "std".
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(41,13): error C2143: Syntaxfehler: Es fehlt ";" vor "<"
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(41,10): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(41,32): error C2238: Unerwartete(s) Token vor ";"
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(20,19): error C3878: Syntaxfehler: Unerwartetes Token "*" nach "simple-type-specifier"
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(20,19): error C3878: Syntaxfehler: Unerwartetes Token "*" nach "expression"
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(21,14): error C2065: "iter": nichtdeklarierter Bezeichner
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(21,21): error C2065: "m_EventHandler": nichtdeklarierter Bezeichner
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(22,13): error C2065: "iter": nichtdeklarierter Bezeichner
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(22,21): error C2065: "m_EventHandler": nichtdeklarierter Bezeichner
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(23,15): error C2065: "iter": nichtdeklarierter Bezeichner
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(27,15): error C2065: "iter": nichtdeklarierter Bezeichner
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(27,31): error C2065: "object": nichtdeklarierter Bezeichner
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(27,73): error C2065: "e": nichtdeklarierter Bezeichner
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(32,9): error C3861: "m_EventHandler": Bezeichner wurde nicht gefunden.
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(32,9): error C2065: "m_EventHandler": nichtdeklarierter Bezeichner
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(37,9): error C3861: "m_EventHandler": Bezeichner wurde nicht gefunden.
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(37,9): error C2065: "m_EventHandler": nichtdeklarierter Bezeichner
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(18,35): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(18,50): error C2143: Syntaxfehler: Es fehlt "," vor "&"
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(59,9): error C2065: "SampleEventArgs": nichtdeklarierter Bezeichner
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(59,25): error C2146: Syntaxfehler: Fehlendes ";" vor Bezeichner "e"
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(59,25): error C2065: "e": nichtdeklarierter Bezeichner
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(60,9): error C2065: "e": nichtdeklarierter Bezeichner
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(61,9): error C2065: "e": nichtdeklarierter Bezeichner
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(64,34): error C2065: "e": nichtdeklarierter Bezeichner
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(87,34): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(87,55): error C2143: Syntaxfehler: Es fehlt "," vor "&"
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(105,7): error C2259: "Caller::SampleEventHandler": Abstrakte Klasse kann nicht erstellt werden.
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(90,22): error C2065: "e": nichtdeklarierter Bezeichner
+         C:\Users\wruser\source\repos\An event mechanism for C++\An event mechanism for C++\An event mechanism for C++.cpp(91,22): error C2065: "e": nichtdeklarierter Bezeichner
+
+    0 Warnung(en)
+    36 Fehler
+
+Verstrichene Zeit 00:00:00.84

+ 2 - 0
An event mechanism for C++/An event mechanism for C++/x64/Debug/An event.55007c10.tlog/An event mechanism for C++.lastbuildstate

@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.22621.0:VcpkgTriplet=x64-windows:
+Debug|x64|C:\Users\wruser\source\repos\An event mechanism for C++\|

+ 1 - 0
An event mechanism for C++/An event mechanism for C++/x64/Debug/An event.55007c10.tlog/CL.command.1.tlog

@@ -0,0 +1 @@
+��

+ 0 - 0
An event mechanism for C++/An event mechanism for C++/x64/Debug/An event.55007c10.tlog/unsuccessfulbuild


binární
An event mechanism for C++/An event mechanism for C++/x64/Debug/vc143.idb


binární
An event mechanism for C++/An event mechanism for C++/x64/Debug/vc143.pdb


binární
AnotherSignalSlot/.vs/AnotherSignalSlot/CopilotIndices/17.13.444.19527/CodeChunks.db


binární
AnotherSignalSlot/.vs/AnotherSignalSlot/CopilotIndices/17.13.444.19527/SemanticSymbols.db


binární
AnotherSignalSlot/.vs/AnotherSignalSlot/FileContentIndex/6294ff90-d403-4230-8f33-cb8c67e53f72.vsidx


binární
AnotherSignalSlot/.vs/AnotherSignalSlot/FileContentIndex/80b49f58-b3a7-490c-b742-6b1bc95c69fc.vsidx


binární
AnotherSignalSlot/.vs/AnotherSignalSlot/v17/.suo


binární
AnotherSignalSlot/.vs/AnotherSignalSlot/v17/Browse.VC.db


+ 62 - 0
AnotherSignalSlot/.vs/AnotherSignalSlot/v17/DocumentLayout.backup.json

@@ -0,0 +1,62 @@
+{
+  "Version": 1,
+  "WorkspaceRootPath": "C:\\Users\\wruser\\source\\repos\\AnotherSignalSlot\\",
+  "Documents": [
+    {
+      "AbsoluteMoniker": "D:0:0:{496C612B-060E-4DCC-A2B1-F3B0C305F2B0}|AnotherSignalSlot\\AnotherSignalSlot.vcxproj|C:\\Users\\wruser\\source\\repos\\AnotherSignalSlot\\AnotherSignalSlot\\AnotherSignalSlot.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
+      "RelativeMoniker": "D:0:0:{496C612B-060E-4DCC-A2B1-F3B0C305F2B0}|AnotherSignalSlot\\AnotherSignalSlot.vcxproj|solutionrelative:AnotherSignalSlot\\AnotherSignalSlot.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{496C612B-060E-4DCC-A2B1-F3B0C305F2B0}|AnotherSignalSlot\\AnotherSignalSlot.vcxproj|C:\\Users\\wruser\\source\\repos\\AnotherSignalSlot\\AnotherSignalSlot\\ass.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
+      "RelativeMoniker": "D:0:0:{496C612B-060E-4DCC-A2B1-F3B0C305F2B0}|AnotherSignalSlot\\AnotherSignalSlot.vcxproj|solutionrelative:AnotherSignalSlot\\ass.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+    }
+  ],
+  "DocumentGroupContainers": [
+    {
+      "Orientation": 0,
+      "VerticalTabListWidth": 256,
+      "DocumentGroups": [
+        {
+          "DockedWidth": 200,
+          "SelectedChildIndex": 2,
+          "Children": [
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{3ae79031-e1bc-11d0-8f78-00a0c9110057}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{40ea2e6b-2121-4bb8-a43e-c83c04b51041}"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 0,
+              "Title": "AnotherSignalSlot.cpp",
+              "DocumentMoniker": "C:\\Users\\wruser\\source\\repos\\AnotherSignalSlot\\AnotherSignalSlot\\AnotherSignalSlot.cpp",
+              "RelativeDocumentMoniker": "AnotherSignalSlot\\AnotherSignalSlot.cpp",
+              "ToolTip": "C:\\Users\\wruser\\source\\repos\\AnotherSignalSlot\\AnotherSignalSlot\\AnotherSignalSlot.cpp*",
+              "RelativeToolTip": "AnotherSignalSlot\\AnotherSignalSlot.cpp*",
+              "ViewState": "AgIAAC0AAAAAAAAAAAAcwEIAAABCAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
+              "WhenOpened": "2025-05-05T14:14:00.616Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 1,
+              "Title": "ass.h",
+              "DocumentMoniker": "C:\\Users\\wruser\\source\\repos\\AnotherSignalSlot\\AnotherSignalSlot\\ass.h",
+              "RelativeDocumentMoniker": "AnotherSignalSlot\\ass.h",
+              "ToolTip": "C:\\Users\\wruser\\source\\repos\\AnotherSignalSlot\\AnotherSignalSlot\\ass.h",
+              "RelativeToolTip": "AnotherSignalSlot\\ass.h",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
+              "WhenOpened": "2025-05-05T14:13:42.541Z",
+              "EditorCaption": ""
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}

+ 62 - 0
AnotherSignalSlot/.vs/AnotherSignalSlot/v17/DocumentLayout.json

@@ -0,0 +1,62 @@
+{
+  "Version": 1,
+  "WorkspaceRootPath": "C:\\Users\\wruser\\source\\repos\\AnotherSignalSlot\\",
+  "Documents": [
+    {
+      "AbsoluteMoniker": "D:0:0:{496C612B-060E-4DCC-A2B1-F3B0C305F2B0}|AnotherSignalSlot\\AnotherSignalSlot.vcxproj|C:\\Users\\wruser\\source\\repos\\AnotherSignalSlot\\AnotherSignalSlot\\AnotherSignalSlot.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
+      "RelativeMoniker": "D:0:0:{496C612B-060E-4DCC-A2B1-F3B0C305F2B0}|AnotherSignalSlot\\AnotherSignalSlot.vcxproj|solutionrelative:AnotherSignalSlot\\AnotherSignalSlot.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{496C612B-060E-4DCC-A2B1-F3B0C305F2B0}|AnotherSignalSlot\\AnotherSignalSlot.vcxproj|C:\\Users\\wruser\\source\\repos\\AnotherSignalSlot\\AnotherSignalSlot\\ass.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
+      "RelativeMoniker": "D:0:0:{496C612B-060E-4DCC-A2B1-F3B0C305F2B0}|AnotherSignalSlot\\AnotherSignalSlot.vcxproj|solutionrelative:AnotherSignalSlot\\ass.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+    }
+  ],
+  "DocumentGroupContainers": [
+    {
+      "Orientation": 0,
+      "VerticalTabListWidth": 256,
+      "DocumentGroups": [
+        {
+          "DockedWidth": 200,
+          "SelectedChildIndex": 2,
+          "Children": [
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{3ae79031-e1bc-11d0-8f78-00a0c9110057}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{40ea2e6b-2121-4bb8-a43e-c83c04b51041}"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 0,
+              "Title": "AnotherSignalSlot.cpp",
+              "DocumentMoniker": "C:\\Users\\wruser\\source\\repos\\AnotherSignalSlot\\AnotherSignalSlot\\AnotherSignalSlot.cpp",
+              "RelativeDocumentMoniker": "AnotherSignalSlot\\AnotherSignalSlot.cpp",
+              "ToolTip": "C:\\Users\\wruser\\source\\repos\\AnotherSignalSlot\\AnotherSignalSlot\\AnotherSignalSlot.cpp",
+              "RelativeToolTip": "AnotherSignalSlot\\AnotherSignalSlot.cpp",
+              "ViewState": "AgIAAAYAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
+              "WhenOpened": "2025-05-05T14:14:00.616Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 1,
+              "Title": "ass.h",
+              "DocumentMoniker": "C:\\Users\\wruser\\source\\repos\\AnotherSignalSlot\\AnotherSignalSlot\\ass.h",
+              "RelativeDocumentMoniker": "AnotherSignalSlot\\ass.h",
+              "ToolTip": "C:\\Users\\wruser\\source\\repos\\AnotherSignalSlot\\AnotherSignalSlot\\ass.h",
+              "RelativeToolTip": "AnotherSignalSlot\\ass.h",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
+              "WhenOpened": "2025-05-05T14:13:42.541Z",
+              "EditorCaption": ""
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}

binární
AnotherSignalSlot/.vs/AnotherSignalSlot/v17/ipch/AutoPCH/5c117234199fe919/ANOTHERSIGNALSLOT.ipch


binární
AnotherSignalSlot/.vs/AnotherSignalSlot/v17/ipch/AutoPCH/a6d0e20f7faad58a/ASS.ipch


+ 31 - 0
AnotherSignalSlot/AnotherSignalSlot.sln

@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.13.35931.197 d17.13
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AnotherSignalSlot", "AnotherSignalSlot\AnotherSignalSlot.vcxproj", "{496C612B-060E-4DCC-A2B1-F3B0C305F2B0}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
+		Release|x64 = Release|x64
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{496C612B-060E-4DCC-A2B1-F3B0C305F2B0}.Debug|x64.ActiveCfg = Debug|x64
+		{496C612B-060E-4DCC-A2B1-F3B0C305F2B0}.Debug|x64.Build.0 = Debug|x64
+		{496C612B-060E-4DCC-A2B1-F3B0C305F2B0}.Debug|x86.ActiveCfg = Debug|Win32
+		{496C612B-060E-4DCC-A2B1-F3B0C305F2B0}.Debug|x86.Build.0 = Debug|Win32
+		{496C612B-060E-4DCC-A2B1-F3B0C305F2B0}.Release|x64.ActiveCfg = Release|x64
+		{496C612B-060E-4DCC-A2B1-F3B0C305F2B0}.Release|x64.Build.0 = Release|x64
+		{496C612B-060E-4DCC-A2B1-F3B0C305F2B0}.Release|x86.ActiveCfg = Release|Win32
+		{496C612B-060E-4DCC-A2B1-F3B0C305F2B0}.Release|x86.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {BED07AA1-B1DC-4A37-A9EB-38026600360D}
+	EndGlobalSection
+EndGlobal

+ 73 - 0
AnotherSignalSlot/AnotherSignalSlot/AnotherSignalSlot.cpp

@@ -0,0 +1,73 @@
+// AnotherSignalSlot.cpp : Diese Datei enthält die Funktion "main". Hier beginnt und endet die Ausführung des Programms.
+// https://github.com/michaelcowan/ass/tree/master
+
+#include <iostream>
+#include "ass.h"
+
+using namespace ass;
+
+class CountingCallable {
+public:
+
+    CountingCallable() : m_count(0), func([&]() { ++m_count; }) {};
+
+    void operator()() {
+        func();
+    }
+
+    int count() const {
+        return m_count;
+    }
+
+private:
+
+    std::function<void()> func;
+    int m_count;
+};
+
+
+
+int main()
+{
+    std::cout << "Hello World!\n";
+    int timesToEmit = 5;
+
+    int called = 0;
+    Signal<> signal;
+    Slot<> slot([&]() { ++called; });
+
+    signal.connect(slot);
+
+    for (int i = 0; i < timesToEmit; i++) {
+        signal.emit();
+    }
+    std::cout << "Called: " << called << std::endl; 
+
+// -------------------------------------------------------------------
+    std::string string;
+    Slot<std::string> slot_1([&](std::string s) {
+        string = std::move(s);
+        });
+
+    Signal<std::string> signal_1;
+    signal_1.connect(slot_1);
+    signal_1.emit("hello");
+    std::cout << "Result: " << string << std::endl; 
+// -------------------------------------------------------------------
+    int integer;
+
+    Slot<std::string, int> slot_2([&](std::string s, int i) {
+        string = std::move(s);
+        integer = i;
+        });
+
+    Signal<std::string, int> signal_2;
+    signal_2.connect(slot_2);
+    signal_2.emit("hello", 5);
+	std::cout << "Result: " << string << " " << integer << std::endl;
+// -------------------------------------------------------------------
+
+
+
+    return 0; 
+}

+ 138 - 0
AnotherSignalSlot/AnotherSignalSlot/AnotherSignalSlot.vcxproj

@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <VCProjectVersion>17.0</VCProjectVersion>
+    <Keyword>Win32Proj</Keyword>
+    <ProjectGuid>{496c612b-060e-4dcc-a2b1-f3b0c305f2b0}</ProjectGuid>
+    <RootNamespace>AnotherSignalSlot</RootNamespace>
+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v143</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v143</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v143</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v143</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="Shared">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="AnotherSignalSlot.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="ass.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 27 - 0
AnotherSignalSlot/AnotherSignalSlot/AnotherSignalSlot.vcxproj.filters

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Quelldateien">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Headerdateien">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
+    </Filter>
+    <Filter Include="Ressourcendateien">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="AnotherSignalSlot.cpp">
+      <Filter>Quelldateien</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="ass.h">
+      <Filter>Headerdateien</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>

+ 4 - 0
AnotherSignalSlot/AnotherSignalSlot/AnotherSignalSlot.vcxproj.user

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup />
+</Project>

+ 285 - 0
AnotherSignalSlot/AnotherSignalSlot/ass.h

@@ -0,0 +1,285 @@
+#pragma once
+/**
+ * MIT License
+ *
+ * Copyright (c) 2019 Michael Cowan
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#include <algorithm>
+#include <functional>
+#include <vector>
+
+namespace ass {
+
+    template<typename... Args>
+    class Signal;
+
+    template<typename... Args>
+    class Slot final {
+
+        friend class Signal<Args...>;
+
+    public:
+
+        Slot() = default;
+
+        explicit Slot(std::function<void(Args...)> callback)
+            : callback(std::move(callback)) {
+        }
+
+        template<typename T>
+        Slot(T* instance, void (T::* function)(Args...))
+            : Slot([=](Args... args) { (instance->*function)(args...); }) {
+        }
+
+        ~Slot() {
+            disconnectAll();
+        }
+
+        /**
+         * Copies all connections of other Slot to this Slot.
+         * @param other Slot to copy connections from.
+         */
+        Slot(const Slot& other) {
+            copyConnectionsFrom(other);
+            this->callback = other.callback;
+        }
+
+        /**
+         * Replaces connections of this Slot with connections of other Slot.
+         * @param other Slot to copy connections from.
+         * @return Copy assigned instance.
+         */
+        Slot& operator=(const Slot& other) {
+            disconnectAll();
+            copyConnectionsFrom(other);
+            this->callback = other.callback;
+            return *this;
+        };
+
+        /**
+         * Copies all connections of other Slot to this Slot then disconnects other Slot.
+         * @param other Slot to copy connections from.
+         */
+        Slot(Slot&& other) noexcept {
+            copyConnectionsFrom(other);
+            other.disconnectAll();
+            std::swap(this->callback, other.callback);
+        }
+
+        /**
+         * Replaces connections of this Slot with connections of other Slot then disconnects other
+         * Slot.
+         * @param other Slot to copy connections from.
+         * @return Move assigned instance.
+         */
+        Slot& operator=(Slot&& other) noexcept {
+            disconnectAll();
+            copyConnectionsFrom(other);
+            other.disconnectAll();
+            std::swap(this->callback, other.callback);
+            return *this;
+        }
+
+        /**
+         * Returns the number of connections for this Slot.
+         *
+         * @return Number of connections for this Slot.
+         */
+        int connectionCount() const {
+            return signals.size();
+        }
+
+        /**
+         * Returns true if this Slot is connected to the provided Signal.
+         *
+         * @param signal Signal to test connection against.
+         * @return true if connected.
+         */
+        bool isConnectedTo(const Signal<Args...>& signal) const {
+            return std::find(signals.begin(), signals.end(), &signal) != signals.end();
+        }
+
+    private:
+
+        void addSignal(Signal<Args...>& signal) const {
+            signals.push_back(&signal);
+        }
+
+        void removeSignal(Signal<Args...>& signal) const {
+            signals.erase(std::remove(signals.begin(), signals.end(), &signal), signals.end());
+        }
+
+        void disconnectAll() {
+            for (auto* signal : signals) {
+                signal->removeSlot(*this);
+            }
+            signals.clear();
+        }
+
+        void copyConnectionsFrom(const Slot<Args...>& other) {
+            for (auto* signal : other.signals) {
+                signal->connect(*this);
+            }
+        }
+
+    private:
+
+        std::function<void(Args...)> callback;
+
+        mutable std::vector<Signal<Args...>*> signals;
+
+    };
+
+    template<typename... Args>
+    class Signal final {
+
+        friend class Slot<Args...>;
+
+    public:
+
+        Signal() = default;
+
+        ~Signal() {
+            disconnectAll();
+        }
+
+        /**
+         * Copies all connections of other Signal to this Signal.
+         * @param other Signal to copy connections from.
+         */
+        Signal(const Signal& other) {
+            copyConnectionsFrom(other);
+        }
+
+        /**
+         * Replaces connections of this Signal with connections of other Signal.
+         * @param other Signal to copy connections from.
+         * @return Copy assigned instance.
+         */
+        Signal& operator=(const Signal& other) {
+            disconnectAll();
+            copyConnectionsFrom(other);
+            return *this;
+        };
+
+        /**
+         * Copies all connections of other Signal to this Signal then disconnects other Signal.
+         * @param other Signal to copy connections from.
+         */
+        Signal(Signal&& other) noexcept {
+            copyConnectionsFrom(other);
+            other.disconnectAll();
+        }
+
+        /**
+         * Replaces connections of this Signal with connections of other Signal then disconnects other
+         * Signal.
+         * @param other Signal to copy connections from.
+         * @return Move assigned instance.
+         */
+        Signal& operator=(Signal&& other) noexcept {
+            disconnectAll();
+            copyConnectionsFrom(other);
+            other.disconnectAll();
+            return *this;
+        }
+
+        /**
+         * Calls function(s) of the connected Slot(s).
+         * @param args Arguments to pass to the Slot functions.
+         */
+        void emit(Args... args) {
+            for (auto* slot : slots) {
+                slot->callback(std::forward<Args>(args)...);
+            }
+        }
+
+        /**
+         * Connects this Signal to the provided Slot unless already connected.
+         *
+         * @param slot Slot to connect this Signal to.
+         */
+        void connect(const Slot<Args...>& slot) {
+            if (!isConnectedTo(slot)) {
+                slots.push_back(&slot);
+                slot.addSignal(*this);
+            }
+        }
+
+        /**
+         * Disconnects this Signal from the provided Slot if connected.
+         *
+         * @param slot Slot to disconnect this Signal from.
+         */
+        void disconnect(const Slot<Args...>& slot) {
+            this->removeSlot(slot);
+            slot.removeSignal(*this);
+        }
+
+        /**
+         * Disconnects this Signal from all connected Slot.
+         */
+        void disconnectAll() {
+            for (auto* slot : slots) {
+                slot->removeSignal(*this);
+            }
+            slots.clear();
+        }
+
+        /**
+         * Returns the number of connections for this Signal.
+         *
+         * @return Number of connections for this Signal.
+         */
+        int connectionCount() const {
+            return slots.size();
+        }
+
+        /**
+         * Returns true if this Signal is connected to the provided Slot.
+         *
+         * @param slot Slot to test connection against.
+         * @return true if connected.
+         */
+        bool isConnectedTo(const Slot<Args...>& slot) const {
+            return std::find(slots.begin(), slots.end(), &slot) != slots.end();
+        }
+
+    private:
+
+        void removeSlot(const Slot<Args...>& slot) {
+            slots.erase(std::remove(slots.begin(), slots.end(), &slot), slots.end());
+        }
+
+        void copyConnectionsFrom(const Signal<Args...>& other) {
+            for (auto* slot : other.slots) {
+                this->connect(*slot);
+            }
+        }
+
+    private:
+
+        std::vector<const Slot<Args...>*> slots;
+
+    };
+
+}

+ 2 - 0
AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherS.496c612b.tlog/AnotherSignalSlot.lastbuildstate

@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.22621.0:VcpkgTriplet=x64-windows:
+Debug|x64|C:\Users\wruser\source\repos\AnotherSignalSlot\|

binární
AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherS.496c612b.tlog/CL.command.1.tlog


binární
AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherS.496c612b.tlog/CL.read.1.tlog


binární
AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherS.496c612b.tlog/CL.write.1.tlog


+ 1 - 0
AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherS.496c612b.tlog/Cl.items.tlog

@@ -0,0 +1 @@
+C:\Users\wruser\source\repos\AnotherSignalSlot\AnotherSignalSlot\AnotherSignalSlot.cpp;C:\Users\wruser\source\repos\AnotherSignalSlot\AnotherSignalSlot\x64\Debug\AnotherSignalSlot.obj

binární
AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherS.496c612b.tlog/link.command.1.tlog


binární
AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherS.496c612b.tlog/link.read.1.tlog


+ 2 - 0
AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherS.496c612b.tlog/link.secondary.1.tlog

@@ -0,0 +1,2 @@
+^C:\USERS\WRUSER\SOURCE\REPOS\ANOTHERSIGNALSLOT\ANOTHERSIGNALSLOT\X64\DEBUG\ANOTHERSIGNALSLOT.OBJ
+C:\Users\wruser\source\repos\AnotherSignalSlot\AnotherSignalSlot\x64\Debug\AnotherSignalSlot.ilk

binární
AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherS.496c612b.tlog/link.write.1.tlog


+ 11 - 0
AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherSignalSlot.exe.recipe

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project>
+  <ProjectOutputs>
+    <ProjectOutput>
+      <FullPath>C:\Users\wruser\source\repos\AnotherSignalSlot\x64\Debug\AnotherSignalSlot.exe</FullPath>
+    </ProjectOutput>
+  </ProjectOutputs>
+  <ContentFiles />
+  <SatelliteDlls />
+  <NonRecipeFileRefs />
+</Project>

binární
AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherSignalSlot.ilk


+ 32 - 0
AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherSignalSlot.log

@@ -0,0 +1,32 @@
+Der Buildvorgang wurde am 05.05.2025 16:34:06 gestartet.
+Die Ausführlichkeit der Protokollierung ist auf "Normal" festgelegt.     1>Projekt "C:\Users\wruser\source\repos\AnotherSignalSlot\AnotherSignalSlot\AnotherSignalSlot.vcxproj" auf Knoten "2", Build Ziel(e).
+     1>PrepareForBuild:
+         Die strukturierte Ausgabe ist aktiviert. Die Formatierung der Compilerdiagnose spiegelt die Fehlerhierarchie wider. Weitere Informationen finden Sie unter https://aka.ms/cpp/structured-output.
+       InitializeBuildStatus:
+         "x64\Debug\AnotherS.496c612b.tlog\unsuccessfulbuild" wird erstellt, da "AlwaysCreate" angegeben wurde.
+         Aktualisieren des Timestamps von "x64\Debug\AnotherS.496c612b.tlog\unsuccessfulbuild".
+       VcpkgTripletSelection:
+         Using triplet "x64-windows" from "C:\Users\wruser\source\repos\vcpkg\installed\x64-windows\"
+         Using normalized configuration "Debug"
+       ClCompile:
+         D:\Programme\VS2022\VC\Tools\MSVC\14.43.34808\bin\HostX64\x64\CL.exe /c /I"C:\Users\wruser\source\repos\vcpkg\installed\x64-windows\include" /ZI /JMC /nologo /W3 /WX- /diagnostics:column /sdl /Od /D _DEBUG /D _CONSOLE /D _UNICODE /D UNICODE /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /permissive- /Fo"x64\Debug\\" /Fd"x64\Debug\vc143.pdb" /external:W3 /Gd /TP /FC /errorReport:prompt AnotherSignalSlot.cpp
+         AnotherSignalSlot.cpp
+       Link:
+         D:\Programme\VS2022\VC\Tools\MSVC\14.43.34808\bin\HostX64\x64\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\wruser\source\repos\AnotherSignalSlot\x64\Debug\AnotherSignalSlot.exe" /INCREMENTAL /ILK:"x64\Debug\AnotherSignalSlot.ilk" /NOLOGO /LIBPATH:"C:\Users\wruser\source\repos\vcpkg\installed\x64-windows\debug\lib" /LIBPATH:"C:\Users\wruser\source\repos\vcpkg\installed\x64-windows\debug\lib\manual-link" kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib "C:\Users\wruser\source\repos\vcpkg\installed\x64-windows\debug\lib\*.lib" /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG /PDB:"C:\Users\wruser\source\repos\AnotherSignalSlot\x64\Debug\AnotherSignalSlot.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:\Users\wruser\source\repos\AnotherSignalSlot\x64\Debug\AnotherSignalSlot.lib" /MACHINE:X64 x64\Debug\AnotherSignalSlot.obj
+         AnotherSignalSlot.vcxproj -> C:\Users\wruser\source\repos\AnotherSignalSlot\x64\Debug\AnotherSignalSlot.exe
+       AppLocalFromInstalled:
+         pwsh.exe -ExecutionPolicy Bypass -noprofile -File "C:\Users\wruser\source\repos\vcpkg\scripts\buildsystems\msbuild\applocal.ps1" "C:\Users\wruser\source\repos\AnotherSignalSlot\x64\Debug\AnotherSignalSlot.exe" "C:\Users\wruser\source\repos\vcpkg\installed\x64-windows\debug\bin" "x64\Debug\AnotherS.496c612b.tlog\AnotherSignalSlot.write.1u.tlog" "x64\Debug\vcpkg.applocal.log"
+         Der Befehl "pwsh.exe" ist entweder falsch geschrieben oder
+         konnte nicht gefunden werden.
+         Der Befehl "pwsh.exe -ExecutionPolicy Bypass -noprofile -File "C:\Users\wruser\source\repos\vcpkg\scripts\buildsystems\msbuild\applocal.ps1" "C:\Users\wruser\source\repos\AnotherSignalSlot\x64\Debug\AnotherSignalSlot.exe" "C:\Users\wruser\source\repos\vcpkg\installed\x64-windows\debug\bin" "x64\Debug\AnotherS.496c612b.tlog\AnotherSignalSlot.write.1u.tlog" "x64\Debug\vcpkg.applocal.log"" wurde mit dem Code 9009 beendet.
+         "C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy Bypass -noprofile -File "C:\Users\wruser\source\repos\vcpkg\scripts\buildsystems\msbuild\applocal.ps1" "C:\Users\wruser\source\repos\AnotherSignalSlot\x64\Debug\AnotherSignalSlot.exe" "C:\Users\wruser\source\repos\vcpkg\installed\x64-windows\debug\bin" "x64\Debug\AnotherS.496c612b.tlog\AnotherSignalSlot.write.1u.tlog" "x64\Debug\vcpkg.applocal.log"
+       FinalizeBuildStatus:
+         Die Datei "x64\Debug\AnotherS.496c612b.tlog\unsuccessfulbuild" wird gelöscht.
+         Aktualisieren des Timestamps von "x64\Debug\AnotherS.496c612b.tlog\AnotherSignalSlot.lastbuildstate".
+     1>Die Erstellung von Projekt "C:\Users\wruser\source\repos\AnotherSignalSlot\AnotherSignalSlot\AnotherSignalSlot.vcxproj" ist abgeschlossen (Build Ziel(e)).
+
+Der Buildvorgang wurde erfolgreich ausgeführt.
+    0 Warnung(en)
+    0 Fehler
+
+Verstrichene Zeit 00:00:02.48

binární
AnotherSignalSlot/AnotherSignalSlot/x64/Debug/AnotherSignalSlot.obj


binární
AnotherSignalSlot/AnotherSignalSlot/x64/Debug/vc143.idb


binární
AnotherSignalSlot/AnotherSignalSlot/x64/Debug/vc143.pdb


+ 1 - 0
AnotherSignalSlot/AnotherSignalSlot/x64/Debug/vcpkg.applocal.log

@@ -0,0 +1 @@
+

binární
AnotherSignalSlot/x64/Debug/AnotherSignalSlot.exe


binární
AnotherSignalSlot/x64/Debug/AnotherSignalSlot.pdb


binární
C++14 Event System/.vs/C++14 Event System/CopilotIndices/17.13.444.19527/CodeChunks.db


binární
C++14 Event System/.vs/C++14 Event System/CopilotIndices/17.13.444.19527/SemanticSymbols.db


binární
C++14 Event System/.vs/C++14 Event System/FileContentIndex/d3dddfcf-687f-4461-af11-7ba7116b7cda.vsidx


binární
C++14 Event System/.vs/C++14 Event System/v17/.suo


binární
C++14 Event System/.vs/C++14 Event System/v17/Browse.VC.db


+ 45 - 0
C++14 Event System/.vs/C++14 Event System/v17/DocumentLayout.backup.json

@@ -0,0 +1,45 @@
+{
+  "Version": 1,
+  "WorkspaceRootPath": "C:\\Users\\wruser\\source\\repos\\C\u002B\u002B14 Event System\\",
+  "Documents": [
+    {
+      "AbsoluteMoniker": "D:0:0:{205DCCF0-FC3A-4005-83D3-10A6BB98598C}|C\u002B\u002B14 Event System\\C\u002B\u002B14 Event System.vcxproj|C:\\Users\\wruser\\source\\repos\\C\u002B\u002B14 Event System\\C\u002B\u002B14 Event System\\C\u002B\u002B14 Event System.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
+      "RelativeMoniker": "D:0:0:{205DCCF0-FC3A-4005-83D3-10A6BB98598C}|C\u002B\u002B14 Event System\\C\u002B\u002B14 Event System.vcxproj|solutionrelative:C\u002B\u002B14 Event System\\C\u002B\u002B14 Event System.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+    }
+  ],
+  "DocumentGroupContainers": [
+    {
+      "Orientation": 0,
+      "VerticalTabListWidth": 256,
+      "DocumentGroups": [
+        {
+          "DockedWidth": 200,
+          "SelectedChildIndex": 2,
+          "Children": [
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{3ae79031-e1bc-11d0-8f78-00a0c9110057}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{40ea2e6b-2121-4bb8-a43e-c83c04b51041}"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 0,
+              "Title": "C\u002B\u002B14 Event System.cpp",
+              "DocumentMoniker": "C:\\Users\\wruser\\source\\repos\\C\u002B\u002B14 Event System\\C\u002B\u002B14 Event System\\C\u002B\u002B14 Event System.cpp",
+              "RelativeDocumentMoniker": "C\u002B\u002B14 Event System\\C\u002B\u002B14 Event System.cpp",
+              "ToolTip": "C:\\Users\\wruser\\source\\repos\\C\u002B\u002B14 Event System\\C\u002B\u002B14 Event System\\C\u002B\u002B14 Event System.cpp",
+              "RelativeToolTip": "C\u002B\u002B14 Event System\\C\u002B\u002B14 Event System.cpp",
+              "ViewState": "AgIAABABAAAAAAAAAAAcwCABAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
+              "WhenOpened": "2025-05-05T09:03:55.263Z",
+              "EditorCaption": ""
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}

+ 45 - 0
C++14 Event System/.vs/C++14 Event System/v17/DocumentLayout.json

@@ -0,0 +1,45 @@
+{
+  "Version": 1,
+  "WorkspaceRootPath": "C:\\Users\\wruser\\source\\repos\\C\u002B\u002B14 Event System\\",
+  "Documents": [
+    {
+      "AbsoluteMoniker": "D:0:0:{205DCCF0-FC3A-4005-83D3-10A6BB98598C}|C\u002B\u002B14 Event System\\C\u002B\u002B14 Event System.vcxproj|C:\\Users\\wruser\\source\\repos\\C\u002B\u002B14 Event System\\C\u002B\u002B14 Event System\\C\u002B\u002B14 Event System.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
+      "RelativeMoniker": "D:0:0:{205DCCF0-FC3A-4005-83D3-10A6BB98598C}|C\u002B\u002B14 Event System\\C\u002B\u002B14 Event System.vcxproj|solutionrelative:C\u002B\u002B14 Event System\\C\u002B\u002B14 Event System.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+    }
+  ],
+  "DocumentGroupContainers": [
+    {
+      "Orientation": 0,
+      "VerticalTabListWidth": 256,
+      "DocumentGroups": [
+        {
+          "DockedWidth": 200,
+          "SelectedChildIndex": 2,
+          "Children": [
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{3ae79031-e1bc-11d0-8f78-00a0c9110057}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{40ea2e6b-2121-4bb8-a43e-c83c04b51041}"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 0,
+              "Title": "C\u002B\u002B14 Event System.cpp",
+              "DocumentMoniker": "C:\\Users\\wruser\\source\\repos\\C\u002B\u002B14 Event System\\C\u002B\u002B14 Event System\\C\u002B\u002B14 Event System.cpp",
+              "RelativeDocumentMoniker": "C\u002B\u002B14 Event System\\C\u002B\u002B14 Event System.cpp",
+              "ToolTip": "C:\\Users\\wruser\\source\\repos\\C\u002B\u002B14 Event System\\C\u002B\u002B14 Event System\\C\u002B\u002B14 Event System.cpp",
+              "RelativeToolTip": "C\u002B\u002B14 Event System\\C\u002B\u002B14 Event System.cpp",
+              "ViewState": "AgIAABABAAAAAAAAAAAcwBgBAAAdAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
+              "WhenOpened": "2025-05-05T09:03:55.263Z",
+              "EditorCaption": ""
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}

binární
C++14 Event System/.vs/C++14 Event System/v17/ipch/AutoPCH/21628301250f7187/C++14 EVENT SYSTEM.ipch


+ 31 - 0
C++14 Event System/C++14 Event System.sln

@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.13.35931.197 d17.13
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "C++14 Event System", "C++14 Event System\C++14 Event System.vcxproj", "{205DCCF0-FC3A-4005-83D3-10A6BB98598C}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
+		Release|x64 = Release|x64
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{205DCCF0-FC3A-4005-83D3-10A6BB98598C}.Debug|x64.ActiveCfg = Debug|x64
+		{205DCCF0-FC3A-4005-83D3-10A6BB98598C}.Debug|x64.Build.0 = Debug|x64
+		{205DCCF0-FC3A-4005-83D3-10A6BB98598C}.Debug|x86.ActiveCfg = Debug|Win32
+		{205DCCF0-FC3A-4005-83D3-10A6BB98598C}.Debug|x86.Build.0 = Debug|Win32
+		{205DCCF0-FC3A-4005-83D3-10A6BB98598C}.Release|x64.ActiveCfg = Release|x64
+		{205DCCF0-FC3A-4005-83D3-10A6BB98598C}.Release|x64.Build.0 = Release|x64
+		{205DCCF0-FC3A-4005-83D3-10A6BB98598C}.Release|x86.ActiveCfg = Release|Win32
+		{205DCCF0-FC3A-4005-83D3-10A6BB98598C}.Release|x86.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {961BE2AE-C842-4B76-A0D7-F2F6C4204B5A}
+	EndGlobalSection
+EndGlobal

+ 306 - 0
C++14 Event System/C++14 Event System/C++14 Event System.cpp

@@ -0,0 +1,306 @@
+// C++14 Event System.cpp : Diese Datei enthält die Funktion "main". Hier beginnt und endet die Ausführung des Programms.
+// https://codereview.stackexchange.com/questions/118628/c14-event-system
+
+#include <iostream>
+
+#ifndef __PD_EVENT__
+#define __PD_EVENT__
+
+#define PD_EVENT_VER 8
+
+#include <functional>
+#include <iostream>
+#include <stdint.h>
+#include <unordered_map>
+
+using namespace std::placeholders;
+
+//
+// @brief  Describes additional parameters for handler binding.
+//
+enum class EventFlag {
+    DEFAULT = 0,
+    ONLY_UNIQUE = 1
+};
+
+//
+// @version 8
+// @brief  Defines means for delegate function subscription and calling on demand.
+//         Maximum allowed number of event arguments is 4.
+// @param
+//
+template<class... Args>
+class Event {
+
+    //
+    // @brief  Address representation for use as identifier in container mapping.
+    //
+    using Address = uint64_t;
+
+    //
+    // @brief  Function object with user-defined variadic template arguments.
+    //
+    using Handler = std::function<void(Args...)>;
+
+    //
+    // @brief  Type that provides a unique memory-based integral definition for given objects.
+    //         Concept: should be collision-free.
+    //
+    using Identifier = uint64_t;
+
+    //
+    // @brief  Maximum supported event handler arguments.
+    //
+    static constexpr auto _MAX_EVENT_ARGS = 4;
+    static_assert(sizeof...(Args) <= _MAX_EVENT_ARGS, "Too many arguments");
+
+public:
+    //
+    // @brief  Subscribes a lambda expression with a matching argument list.
+    // @param  lambda - the lambda expression to bind.
+    //
+    void operator+=(Handler lambda) {
+        // TODO find a way to unbind
+        _addToList(_identify(&lambda, 0), lambda, EventFlag::DEFAULT);
+    }
+
+    //
+    // @brief  Doubles as a fire function.
+    //
+    void operator()(Args... e) {
+        fire(e...);
+    }
+
+    //
+    // @brief  Calls every subscriber in container with given arguments.
+    // @param  e... - arguments, that the defined event accepts.
+    //         Contract: [0-4] arguments
+    //
+    void fire(Args... e) {
+        for (auto subscriber : subscribers)
+            subscriber.second(e...);
+    }
+
+    //
+    // @brief  Checks if there's a subscriber with a matching address in the container.
+    //
+    bool hasSubscriber(Address a) const {
+        return subscribers.find(a) != subscribers.end();
+    }
+
+#pragma mark - bind(...) overloads
+
+    //
+    // @brief  Subscribes a member function with no arguments.
+    // @param  member - member function pointer &C::M.
+    // @param  instance - instance of structure housing the member function.
+    // @usage  <i>event.bind(&MyClass::member, myClassInstance)</i>.
+    //
+    template<class C, class M, class T>
+    void bind(C(M::* member)(), T* instance, EventFlag flag = EventFlag::DEFAULT) {
+        _addToList(_identify(instance, member), std::bind(member, instance), flag);
+    }
+
+    //
+    // @brief  Subscribes a member function with 1 argument.
+    //         Event handler argument A1.
+    //
+    template<class C, class M, class T, typename A1>
+    void bind(C(M::* member)(A1), T* instance, EventFlag flag = EventFlag::DEFAULT) {
+        _addToList(_identify(instance, member), std::bind(member, instance, _1), flag);
+    }
+
+    //
+    // @brief  Subscribes a member function with 2 arguments.
+    //         Event handler arguments: A1, A2.
+    //
+    template<class C, class M, class T, typename A1, typename A2>
+    void bind(C(M::* member)(A1, A2), T* instance, EventFlag flag = EventFlag::DEFAULT) {
+        _addToList(_identify(instance, member), std::bind(member, instance, _1, _2), flag);
+    }
+
+    //
+    // @brief  Subscribes a member function with 3 arguments.
+    //         Event handler arguments: A1, A2, A3.
+    //
+    template<class C, class M, class T, typename A1, typename A2, typename A3>
+    void bind(C(M::* member)(A1, A2, A3), T* instance, EventFlag flag = EventFlag::DEFAULT) {
+        _addToList(_identify(instance, member), std::bind(member, instance, _1, _2, _3), flag);
+    }
+
+    //
+    // @brief  Subscribes a member function with 4 arguments.
+    //         Event handler arguments: A1, A2, A3, A4.
+    //
+    template<class C, class M, class T, typename A1, typename A2, typename A3, typename A4>
+    void bind(C(M::* member)(A1, A2, A3, A4), T* instance, EventFlag flag = EventFlag::DEFAULT) {
+        _addToList(_identify(instance, member), std::bind(member, instance, _1, _2, _3, _4), flag);
+    }
+
+#pragma mark - unbind(...) overloads
+
+    //
+    // @brief  Unsubscribes a member function by its function pointer address as key.
+    // @param  member - member function pointer &C::M.
+    // @param  instance - instance of structure housing the member function.
+    // @usage  <i>event.unbind(&MyClass::member, myClassInstance)</i>.
+    //
+    template<typename C, typename M, typename T>
+    void unbind(C(M::* member)(), T* instance) {
+        _removeFromList(_identify(instance, member));
+    }
+
+    //
+    // @brief  Unsubscribes a member function by its function pointer address as key.
+    //         Event handler argument A1.
+    //
+    template<class C, class M, class T, typename A1>
+    void unbind(C(M::* member)(A1), T* instance) {
+        _removeFromList(_identify(instance, member));
+    }
+
+    //
+    // @brief  Unsubscribes a member function by its function pointer address as key.
+    //         Event handler arguments: A1, A2.
+    //
+    template<class C, class M, class T, typename A1, typename A2>
+    void unbind(C(M::* member)(A1, A2), T* instance) {
+        _removeFromList(_identify(instance, member));
+    }
+
+    //
+    // @brief  Unsubscribes a member function by its function pointer address as key.
+    //         Event handler arguments: A1, A2, A3.
+    //
+    template<class C, class M, class T, typename A1, typename A2, typename A3>
+    void unbind(C(M::* member)(A1, A2, A3), T* instance) {
+        _removeFromList(_identify(instance, member));
+    }
+
+    //
+    // @brief  Unsubscribes a member function by its function pointer address as key.
+    //         Event handler arguments: A1, A2, A3, A4.
+    //
+    template<class C, class M, class T, typename A1, typename A2, typename A3, typename A4>
+    void unbind(C(M::* member)(A1, A2, A3, A4), T* instance) {
+        _removeFromList(_identify(instance, member));
+    }
+
+private:
+
+#pragma mark - Address conversion
+
+    //
+    // @brief  Unions a generic lvalue object address and an integral identifier.
+    //
+    template<typename T>
+    union AddressCast {
+        explicit AddressCast(T _type) : type(_type) {}
+        T type;
+        Identifier address;
+    };
+
+    //
+    // @brief  Returns a unique identifier for a given member function pointer and instance pointer.
+    //
+    template<class C, class M>
+    inline static Identifier _identify(C _class, M _member) {
+        return AddressCast<C>(_class).address * 10 + AddressCast<M>(_member).address;
+    }
+
+#pragma mark - Private inline functions
+
+    //
+    // @brief  Validates prepared function object and adds it to the container.
+    //         Contract: handlers with matching identifiers present in the container are silently ignored.
+    //
+    inline void _addToList(Address a, Handler h, EventFlag flag) {
+        // disallow non-unique handlers
+        if (flag == EventFlag::ONLY_UNIQUE && hasSubscriber(a)) return;
+
+        subscribers.insert(std::make_pair(a, h));
+    }
+
+    //
+    // @brief  Removes bound function object from the container by its address.
+    //         Contract: non-existent member identifier is silently ignored.
+    //
+    inline void _removeFromList(Address a) {
+        auto it = subscribers.find(a);
+        if (it != subscribers.end())
+            subscribers.erase(it);
+        else {
+            // TODO handle
+        }
+    }
+
+    //
+    // @brief  Pairs bound subscribers with their unique memory address.
+    //         Container has to be unordered for the handlers to be called sequentially.
+    //
+    std::unordered_map<Identifier, Handler> subscribers;
+};
+
+#endif
+
+
+struct WidgetEventArgs {
+    explicit WidgetEventArgs(std::string _reversedString) : reversedString(_reversedString) {}
+    std::string reversedString;
+};
+
+class Widget {
+public:
+    void reverseString(std::string s) {
+        auto reversedS = std::string(s.rbegin(), s.rend());
+
+        // fire stringReversed event
+        // method 1:
+        stringReversed.fire(WidgetEventArgs(reversedS));
+
+        // method 2:
+        stringReversed(WidgetEventArgs(reversedS));
+
+    }
+    Event<WidgetEventArgs> stringReversed;
+};
+
+class Consumer {
+public:
+    Consumer() {
+        // event subscription to a member function
+        _widget.stringReversed.bind(&Consumer::_onStringReversed1, this);
+        _widget.stringReversed.bind(&Consumer::_onStringReversed2, this);
+
+        // ignore subscription if handler function already subscribed:
+        _widget.stringReversed.bind(&Consumer::_onStringReversed2, this, EventFlag::ONLY_UNIQUE);
+
+        // unsubscribe event
+        _widget.stringReversed.unbind(&Consumer::_onStringReversed2, this);
+
+        // subscribe a lambda
+        _widget.stringReversed += [](auto e) {
+            std::cout << e.reversedString << " from lambda\n";
+            };
+
+        _widget.reverseString("Hello");
+
+    }
+
+private:
+    Widget _widget;
+
+    void _onStringReversed1(WidgetEventArgs e) {
+        std::cout << e.reversedString << 1 << std::endl;
+    }
+
+    void _onStringReversed2(WidgetEventArgs e) {
+        std::cout << e.reversedString << 2 << std::endl;
+    }
+};
+
+
+int main() {
+    Consumer c;
+    return 0;
+}

+ 135 - 0
C++14 Event System/C++14 Event System/C++14 Event System.vcxproj

@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <VCProjectVersion>17.0</VCProjectVersion>
+    <Keyword>Win32Proj</Keyword>
+    <ProjectGuid>{205dccf0-fc3a-4005-83d3-10a6bb98598c}</ProjectGuid>
+    <RootNamespace>C14EventSystem</RootNamespace>
+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v143</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v143</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v143</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v143</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="Shared">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="C++14 Event System.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 22 - 0
C++14 Event System/C++14 Event System/C++14 Event System.vcxproj.filters

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Quelldateien">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Headerdateien">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
+    </Filter>
+    <Filter Include="Ressourcendateien">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="C++14 Event System.cpp">
+      <Filter>Quelldateien</Filter>
+    </ClCompile>
+  </ItemGroup>
+</Project>

+ 4 - 0
C++14 Event System/C++14 Event System/C++14 Event System.vcxproj.user

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup />
+</Project>

+ 2 - 0
C++14 Event System/C++14 Event System/x64/Debug/C++14 Ev.205dccf0.tlog/C++14 Event System.lastbuildstate

@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.22621.0:VcpkgTriplet=x64-windows:
+Debug|x64|C:\Users\wruser\source\repos\C++14 Event System\|

binární
C++14 Event System/C++14 Event System/x64/Debug/C++14 Ev.205dccf0.tlog/CL.command.1.tlog


binární
C++14 Event System/C++14 Event System/x64/Debug/C++14 Ev.205dccf0.tlog/CL.read.1.tlog


binární
C++14 Event System/C++14 Event System/x64/Debug/C++14 Ev.205dccf0.tlog/CL.write.1.tlog


+ 1 - 0
C++14 Event System/C++14 Event System/x64/Debug/C++14 Ev.205dccf0.tlog/Cl.items.tlog

@@ -0,0 +1 @@
+C:\Users\wruser\source\repos\C++14 Event System\C++14 Event System\C++14 Event System.cpp;C:\Users\wruser\source\repos\C++14 Event System\C++14 Event System\x64\Debug\C++14 Event System.obj

binární
C++14 Event System/C++14 Event System/x64/Debug/C++14 Ev.205dccf0.tlog/link.command.1.tlog


binární
C++14 Event System/C++14 Event System/x64/Debug/C++14 Ev.205dccf0.tlog/link.read.1.tlog


+ 2 - 0
C++14 Event System/C++14 Event System/x64/Debug/C++14 Ev.205dccf0.tlog/link.secondary.1.tlog

@@ -0,0 +1,2 @@
+^C:\USERS\WRUSER\SOURCE\REPOS\C++14 EVENT SYSTEM\C++14 EVENT SYSTEM\X64\DEBUG\C++14 EVENT SYSTEM.OBJ
+C:\Users\wruser\source\repos\C++14 Event System\C++14 Event System\x64\Debug\C++14 Event System.ilk

binární
C++14 Event System/C++14 Event System/x64/Debug/C++14 Ev.205dccf0.tlog/link.write.1.tlog


+ 11 - 0
C++14 Event System/C++14 Event System/x64/Debug/C++14 Event System.exe.recipe

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project>
+  <ProjectOutputs>
+    <ProjectOutput>
+      <FullPath>C:\Users\wruser\source\repos\C++14 Event System\x64\Debug\C++14 Event System.exe</FullPath>
+    </ProjectOutput>
+  </ProjectOutputs>
+  <ContentFiles />
+  <SatelliteDlls />
+  <NonRecipeFileRefs />
+</Project>

binární
C++14 Event System/C++14 Event System/x64/Debug/C++14 Event System.ilk


+ 46 - 0
C++14 Event System/C++14 Event System/x64/Debug/C++14 Event System.log

@@ -0,0 +1,46 @@
+Der Buildvorgang wurde am 05.05.2025 11:05:07 gestartet.
+Die Ausführlichkeit der Protokollierung ist auf "Normal" festgelegt.     1>Projekt "C:\Users\wruser\source\repos\C++14 Event System\C++14 Event System\C++14 Event System.vcxproj" auf Knoten "2", Build Ziel(e).
+     1>PrepareForBuild:
+         Die strukturierte Ausgabe ist aktiviert. Die Formatierung der Compilerdiagnose spiegelt die Fehlerhierarchie wider. Weitere Informationen finden Sie unter https://aka.ms/cpp/structured-output.
+         Das Verzeichnis "C:\Users\wruser\source\repos\C++14 Event System\x64\Debug\" wird erstellt.
+         Das Verzeichnis "x64\Debug\C++14 Ev.205dccf0.tlog\" wird erstellt.
+       InitializeBuildStatus:
+         "x64\Debug\C++14 Ev.205dccf0.tlog\unsuccessfulbuild" wird erstellt, da "AlwaysCreate" angegeben wurde.
+         Aktualisieren des Timestamps von "x64\Debug\C++14 Ev.205dccf0.tlog\unsuccessfulbuild".
+       VcpkgTripletSelection:
+         Using triplet "x64-windows" from "C:\Users\wruser\source\repos\vcpkg\installed\x64-windows\"
+         Using normalized configuration "Debug"
+       ClCompile:
+         D:\Programme\VS2022\VC\Tools\MSVC\14.43.34808\bin\HostX64\x64\CL.exe /c /I"C:\Users\wruser\source\repos\vcpkg\installed\x64-windows\include" /ZI /JMC /nologo /W3 /WX- /diagnostics:column /sdl /Od /D _DEBUG /D _CONSOLE /D _UNICODE /D UNICODE /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /permissive- /Fo"x64\Debug\\" /Fd"x64\Debug\vc143.pdb" /external:W3 /Gd /TP /FC /errorReport:prompt "C++14 Event System.cpp"
+         C++14 Event System.cpp
+     1>C:\Users\wruser\source\repos\C++14 Event System\C++14 Event System\C++14 Event System.cpp(91,9): warning C4068: Unbekanntes Pragma "mark".
+     1>C:\Users\wruser\source\repos\C++14 Event System\C++14 Event System\C++14 Event System.cpp(140,9): warning C4068: Unbekanntes Pragma "mark".
+     1>C:\Users\wruser\source\repos\C++14 Event System\C++14 Event System\C++14 Event System.cpp(191,9): warning C4068: Unbekanntes Pragma "mark".
+     1>C:\Users\wruser\source\repos\C++14 Event System\C++14 Event System\C++14 Event System.cpp(211,9): warning C4068: Unbekanntes Pragma "mark".
+       Link:
+         D:\Programme\VS2022\VC\Tools\MSVC\14.43.34808\bin\HostX64\x64\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\wruser\source\repos\C++14 Event System\x64\Debug\C++14 Event System.exe" /INCREMENTAL /ILK:"x64\Debug\C++14 Event System.ilk" /NOLOGO /LIBPATH:"C:\Users\wruser\source\repos\vcpkg\installed\x64-windows\debug\lib" /LIBPATH:"C:\Users\wruser\source\repos\vcpkg\installed\x64-windows\debug\lib\manual-link" kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib "C:\Users\wruser\source\repos\vcpkg\installed\x64-windows\debug\lib\*.lib" /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG /PDB:"C:\Users\wruser\source\repos\C++14 Event System\x64\Debug\C++14 Event System.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:\Users\wruser\source\repos\C++14 Event System\x64\Debug\C++14 Event System.lib" /MACHINE:X64 "x64\Debug\C++14 Event System.obj"
+         C++14 Event System.vcxproj -> C:\Users\wruser\source\repos\C++14 Event System\x64\Debug\C++14 Event System.exe
+       AppLocalFromInstalled:
+         pwsh.exe -ExecutionPolicy Bypass -noprofile -File "C:\Users\wruser\source\repos\vcpkg\scripts\buildsystems\msbuild\applocal.ps1" "C:\Users\wruser\source\repos\C++14 Event System\x64\Debug\C++14 Event System.exe" "C:\Users\wruser\source\repos\vcpkg\installed\x64-windows\debug\bin" "x64\Debug\C++14 Ev.205dccf0.tlog\C++14 Event System.write.1u.tlog" "x64\Debug\vcpkg.applocal.log"
+         Der Befehl "pwsh.exe" ist entweder falsch geschrieben oder
+         konnte nicht gefunden werden.
+         Der Befehl "pwsh.exe -ExecutionPolicy Bypass -noprofile -File "C:\Users\wruser\source\repos\vcpkg\scripts\buildsystems\msbuild\applocal.ps1" "C:\Users\wruser\source\repos\C++14 Event System\x64\Debug\C++14 Event System.exe" "C:\Users\wruser\source\repos\vcpkg\installed\x64-windows\debug\bin" "x64\Debug\C++14 Ev.205dccf0.tlog\C++14 Event System.write.1u.tlog" "x64\Debug\vcpkg.applocal.log"" wurde mit dem Code 9009 beendet.
+         "C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy Bypass -noprofile -File "C:\Users\wruser\source\repos\vcpkg\scripts\buildsystems\msbuild\applocal.ps1" "C:\Users\wruser\source\repos\C++14 Event System\x64\Debug\C++14 Event System.exe" "C:\Users\wruser\source\repos\vcpkg\installed\x64-windows\debug\bin" "x64\Debug\C++14 Ev.205dccf0.tlog\C++14 Event System.write.1u.tlog" "x64\Debug\vcpkg.applocal.log"
+       FinalizeBuildStatus:
+         Die Datei "x64\Debug\C++14 Ev.205dccf0.tlog\unsuccessfulbuild" wird gelöscht.
+         Aktualisieren des Timestamps von "x64\Debug\C++14 Ev.205dccf0.tlog\C++14 Event System.lastbuildstate".
+     1>Die Erstellung von Projekt "C:\Users\wruser\source\repos\C++14 Event System\C++14 Event System\C++14 Event System.vcxproj" ist abgeschlossen (Build Ziel(e)).
+
+Der Buildvorgang wurde erfolgreich ausgeführt.
+
+       "C:\Users\wruser\source\repos\C++14 Event System\C++14 Event System\C++14 Event System.vcxproj" (Build Ziel) (1) ->
+       (ClCompile Ziel) -> 
+         C:\Users\wruser\source\repos\C++14 Event System\C++14 Event System\C++14 Event System.cpp(91,9): warning C4068: Unbekanntes Pragma "mark".
+         C:\Users\wruser\source\repos\C++14 Event System\C++14 Event System\C++14 Event System.cpp(140,9): warning C4068: Unbekanntes Pragma "mark".
+         C:\Users\wruser\source\repos\C++14 Event System\C++14 Event System\C++14 Event System.cpp(191,9): warning C4068: Unbekanntes Pragma "mark".
+         C:\Users\wruser\source\repos\C++14 Event System\C++14 Event System\C++14 Event System.cpp(211,9): warning C4068: Unbekanntes Pragma "mark".
+
+    4 Warnung(en)
+    0 Fehler
+
+Verstrichene Zeit 00:00:02.91

binární
C++14 Event System/C++14 Event System/x64/Debug/C++14 Event System.obj


binární
C++14 Event System/C++14 Event System/x64/Debug/vc143.idb


binární
C++14 Event System/C++14 Event System/x64/Debug/vc143.pdb


+ 1 - 0
C++14 Event System/C++14 Event System/x64/Debug/vcpkg.applocal.log

@@ -0,0 +1 @@
+

binární
C++14 Event System/x64/Debug/C++14 Event System.exe


binární
C++14 Event System/x64/Debug/C++14 Event System.pdb


binární
CallbackFunctions/.vs/CallbackFunctions/CopilotIndices/17.13.444.19527/CodeChunks.db


binární
CallbackFunctions/.vs/CallbackFunctions/CopilotIndices/17.13.444.19527/SemanticSymbols.db


binární
CallbackFunctions/.vs/CallbackFunctions/FileContentIndex/4c873c62-1e57-464a-ab43-527b2f82aaca.vsidx


binární
CallbackFunctions/.vs/CallbackFunctions/v17/.suo


binární
CallbackFunctions/.vs/CallbackFunctions/v17/Browse.VC.db


+ 45 - 0
CallbackFunctions/.vs/CallbackFunctions/v17/DocumentLayout.backup.json

@@ -0,0 +1,45 @@
+{
+  "Version": 1,
+  "WorkspaceRootPath": "C:\\Users\\wruser\\source\\repos\\CallbackFunctions\\",
+  "Documents": [
+    {
+      "AbsoluteMoniker": "D:0:0:{AE5DEB1B-9772-4292-8A86-B58FAC9EAF89}|CallbackFunctions\\CallbackFunctions.vcxproj|C:\\Users\\wruser\\source\\repos\\CallbackFunctions\\CallbackFunctions\\CallbackFunctions.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
+      "RelativeMoniker": "D:0:0:{AE5DEB1B-9772-4292-8A86-B58FAC9EAF89}|CallbackFunctions\\CallbackFunctions.vcxproj|solutionrelative:CallbackFunctions\\CallbackFunctions.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+    }
+  ],
+  "DocumentGroupContainers": [
+    {
+      "Orientation": 0,
+      "VerticalTabListWidth": 256,
+      "DocumentGroups": [
+        {
+          "DockedWidth": 200,
+          "SelectedChildIndex": 2,
+          "Children": [
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{3ae79031-e1bc-11d0-8f78-00a0c9110057}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{40ea2e6b-2121-4bb8-a43e-c83c04b51041}"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 0,
+              "Title": "CallbackFunctions.cpp",
+              "DocumentMoniker": "C:\\Users\\wruser\\source\\repos\\CallbackFunctions\\CallbackFunctions\\CallbackFunctions.cpp",
+              "RelativeDocumentMoniker": "CallbackFunctions\\CallbackFunctions.cpp",
+              "ToolTip": "C:\\Users\\wruser\\source\\repos\\CallbackFunctions\\CallbackFunctions\\CallbackFunctions.cpp",
+              "RelativeToolTip": "CallbackFunctions\\CallbackFunctions.cpp",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAzAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
+              "WhenOpened": "2025-05-05T14:42:32.277Z",
+              "EditorCaption": ""
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}

+ 45 - 0
CallbackFunctions/.vs/CallbackFunctions/v17/DocumentLayout.json

@@ -0,0 +1,45 @@
+{
+  "Version": 1,
+  "WorkspaceRootPath": "C:\\Users\\wruser\\source\\repos\\CallbackFunctions\\",
+  "Documents": [
+    {
+      "AbsoluteMoniker": "D:0:0:{AE5DEB1B-9772-4292-8A86-B58FAC9EAF89}|CallbackFunctions\\CallbackFunctions.vcxproj|C:\\Users\\wruser\\source\\repos\\CallbackFunctions\\CallbackFunctions\\CallbackFunctions.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
+      "RelativeMoniker": "D:0:0:{AE5DEB1B-9772-4292-8A86-B58FAC9EAF89}|CallbackFunctions\\CallbackFunctions.vcxproj|solutionrelative:CallbackFunctions\\CallbackFunctions.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+    }
+  ],
+  "DocumentGroupContainers": [
+    {
+      "Orientation": 0,
+      "VerticalTabListWidth": 256,
+      "DocumentGroups": [
+        {
+          "DockedWidth": 200,
+          "SelectedChildIndex": 2,
+          "Children": [
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{3ae79031-e1bc-11d0-8f78-00a0c9110057}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{40ea2e6b-2121-4bb8-a43e-c83c04b51041}"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 0,
+              "Title": "CallbackFunctions.cpp",
+              "DocumentMoniker": "C:\\Users\\wruser\\source\\repos\\CallbackFunctions\\CallbackFunctions\\CallbackFunctions.cpp",
+              "RelativeDocumentMoniker": "CallbackFunctions\\CallbackFunctions.cpp",
+              "ToolTip": "C:\\Users\\wruser\\source\\repos\\CallbackFunctions\\CallbackFunctions\\CallbackFunctions.cpp",
+              "RelativeToolTip": "CallbackFunctions\\CallbackFunctions.cpp",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAzAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
+              "WhenOpened": "2025-05-05T14:42:32.277Z",
+              "EditorCaption": ""
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}

binární
CallbackFunctions/.vs/CallbackFunctions/v17/ipch/AutoPCH/4c9ac2e536700f/CALLBACKFUNCTIONS.ipch


+ 31 - 0
CallbackFunctions/CallbackFunctions.sln

@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.13.35931.197 d17.13
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CallbackFunctions", "CallbackFunctions\CallbackFunctions.vcxproj", "{AE5DEB1B-9772-4292-8A86-B58FAC9EAF89}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
+		Release|x64 = Release|x64
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{AE5DEB1B-9772-4292-8A86-B58FAC9EAF89}.Debug|x64.ActiveCfg = Debug|x64
+		{AE5DEB1B-9772-4292-8A86-B58FAC9EAF89}.Debug|x64.Build.0 = Debug|x64
+		{AE5DEB1B-9772-4292-8A86-B58FAC9EAF89}.Debug|x86.ActiveCfg = Debug|Win32
+		{AE5DEB1B-9772-4292-8A86-B58FAC9EAF89}.Debug|x86.Build.0 = Debug|Win32
+		{AE5DEB1B-9772-4292-8A86-B58FAC9EAF89}.Release|x64.ActiveCfg = Release|x64
+		{AE5DEB1B-9772-4292-8A86-B58FAC9EAF89}.Release|x64.Build.0 = Release|x64
+		{AE5DEB1B-9772-4292-8A86-B58FAC9EAF89}.Release|x86.ActiveCfg = Release|Win32
+		{AE5DEB1B-9772-4292-8A86-B58FAC9EAF89}.Release|x86.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {2591245A-4445-42F6-9A91-B193EC845425}
+	EndGlobalSection
+EndGlobal

+ 59 - 0
CallbackFunctions/CallbackFunctions/CallbackFunctions.cpp

@@ -0,0 +1,59 @@
+// CallbackFunctions.cpp : Diese Datei enthält die Funktion "main". Hier beginnt und endet die Ausführung des Programms.
+//
+#include <iostream>
+#include <vector>
+
+
+using namespace std;
+
+void print(vector<int> v) {
+    for (auto x : v) cout << x << " ";
+    cout << endl;
+}
+
+/*
+    []:  can only access variables which are local to it.
+    [&]: capture all external variables by reference.
+    [=]: capture all external variables by value.
+    [a, &b]: capture ‘a’ by value and ‘b’ by reference.
+
+*/
+
+
+
+
+int main() {
+    vector<int> v1, v2;
+
+    // Capture v1 and v2 by reference
+    auto byRef = [&](int m) {
+        v1.push_back(m);
+        v2.push_back(m);
+        };
+
+    // Capture v1 and v2 by value
+    auto byVal = [=](int m) mutable {
+        v1.push_back(m);
+        v2.push_back(m);
+        };
+
+    // Capture v1 by reference and v2 by value
+    auto mixed = [=, &v1](int m) mutable {
+        v1.push_back(m);
+        v2.push_back(m);
+        };
+
+    // Push 20 in both v1 and v2
+    byRef(20);
+
+    // Push 234 in both v1 and v2
+    byVal(234);
+
+    // Push 10 in both v1 and v2
+    mixed(10);
+
+    print(v1);
+    print(v2);
+
+    return 0;
+}

+ 135 - 0
CallbackFunctions/CallbackFunctions/CallbackFunctions.vcxproj

@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <VCProjectVersion>17.0</VCProjectVersion>
+    <Keyword>Win32Proj</Keyword>
+    <ProjectGuid>{ae5deb1b-9772-4292-8a86-b58fac9eaf89}</ProjectGuid>
+    <RootNamespace>CallbackFunctions</RootNamespace>
+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v143</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v143</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v143</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v143</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="Shared">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="CallbackFunctions.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 22 - 0
CallbackFunctions/CallbackFunctions/CallbackFunctions.vcxproj.filters

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Quelldateien">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Headerdateien">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
+    </Filter>
+    <Filter Include="Ressourcendateien">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="CallbackFunctions.cpp">
+      <Filter>Quelldateien</Filter>
+    </ClCompile>
+  </ItemGroup>
+</Project>

+ 4 - 0
CallbackFunctions/CallbackFunctions/CallbackFunctions.vcxproj.user

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup />
+</Project>

binární
CallbackFunctions/CallbackFunctions/x64/Debug/Callback.ae5deb1b.tlog/CL.command.1.tlog


binární
CallbackFunctions/CallbackFunctions/x64/Debug/Callback.ae5deb1b.tlog/CL.read.1.tlog


binární
CallbackFunctions/CallbackFunctions/x64/Debug/Callback.ae5deb1b.tlog/CL.write.1.tlog


Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů