From 9b3ad53e855764e46a9febe395b88d3ca1aeaf45 Mon Sep 17 00:00:00 2001
From: Egor Tensin <Egor.Tensin@gmail.com>
Date: Sat, 24 Jun 2017 22:54:43 +0300
Subject: add post "static vs. inline vs. namespace {"

Also includes a bunch of includes to easily add grouped code snippets to
a post.
They were present before, but I wiped them away during the recent major
history rewriting which I still regret about.
---
 .../inline/shared.hpp                               |  7 +++++++
 .../inline/weird/another.cpp                        | 13 +++++++++++++
 .../inline/weird/another.hpp                        |  3 +++
 .../inline/weird/main.cpp                           | 15 +++++++++++++++
 .../separate_method_definitions/another.cpp         |  7 +++++++
 .../separate_method_definitions/another.hpp         |  3 +++
 .../separate_method_definitions/main.cpp            |  9 +++++++++
 .../separate_method_definitions/shared.hpp          | 14 ++++++++++++++
 .../static/main.cpp                                 | 11 +++++++++++
 .../static/proxy.cpp                                |  7 +++++++
 .../static/proxy.hpp                                |  3 +++
 .../static/shared.hpp                               |  7 +++++++
 .../static_and_inline/main.cpp                      | 11 +++++++++++
 .../static_and_inline/proxy.cpp                     |  7 +++++++
 .../static_and_inline/proxy.hpp                     |  3 +++
 .../static_and_inline/shared.hpp                    |  7 +++++++
 .../unnamed_namespace_and_inline/main.cpp           | 11 +++++++++++
 .../unnamed_namespace_and_inline/proxy.cpp          |  7 +++++++
 .../unnamed_namespace_and_inline/proxy.hpp          |  3 +++
 .../unnamed_namespace_and_inline/shared.hpp         | 10 ++++++++++
 .../unnamed_namespaces/ok/another.cpp               | 18 ++++++++++++++++++
 .../unnamed_namespaces/ok/another.hpp               |  3 +++
 .../unnamed_namespaces/ok/main.cpp                  | 21 +++++++++++++++++++++
 .../unnamed_namespaces/weird/another.cpp            | 15 +++++++++++++++
 .../unnamed_namespaces/weird/another.hpp            |  3 +++
 .../unnamed_namespaces/weird/main.cpp               | 18 ++++++++++++++++++
 26 files changed, 236 insertions(+)
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/shared.hpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/another.cpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/another.hpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/main.cpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/another.cpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/another.hpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/main.cpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/shared.hpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/main.cpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/proxy.cpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/proxy.hpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/shared.hpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/main.cpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/proxy.cpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/proxy.hpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/shared.hpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/main.cpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/proxy.cpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/proxy.hpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/shared.hpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/another.cpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/another.hpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/main.cpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/weird/another.cpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/weird/another.hpp
 create mode 100644 _posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/weird/main.cpp

(limited to '_posts/snippets/static_vs_inline_vs_unnamed_namespaces')

diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/shared.hpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/shared.hpp
new file mode 100644
index 0000000..91313f2
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/shared.hpp
@@ -0,0 +1,7 @@
+#pragma once
+
+inline int shared()
+{
+    static int n = 0;
+    return ++n;
+}
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/another.cpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/another.cpp
new file mode 100644
index 0000000..668516a
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/another.cpp
@@ -0,0 +1,13 @@
+#include "another.hpp"
+
+#include <iostream>
+
+inline void shared()
+{
+    std::cout << "another.cpp: shared()\n";
+}
+
+void another()
+{
+    shared();
+}
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/another.hpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/another.hpp
new file mode 100644
index 0000000..9c26d3f
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/another.hpp
@@ -0,0 +1,3 @@
+#pragma once
+
+void another();
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/main.cpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/main.cpp
new file mode 100644
index 0000000..4e32fb5
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/main.cpp
@@ -0,0 +1,15 @@
+#include "another.hpp"
+
+#include <iostream>
+
+inline void shared()
+{
+    std::cout << "main.cpp: shared()\n";
+}
+
+int main()
+{
+    shared();
+    another();
+    return 0;
+}
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/another.cpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/another.cpp
new file mode 100644
index 0000000..d8d53ae
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/another.cpp
@@ -0,0 +1,7 @@
+#include "another.hpp"
+#include "shared.hpp"
+
+void another()
+{
+    Test test;
+}
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/another.hpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/another.hpp
new file mode 100644
index 0000000..9c26d3f
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/another.hpp
@@ -0,0 +1,3 @@
+#pragma once
+
+void another();
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/main.cpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/main.cpp
new file mode 100644
index 0000000..8d2043f
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/main.cpp
@@ -0,0 +1,9 @@
+#include "another.hpp"
+#include "shared.hpp"
+
+int main()
+{
+    Test test;
+    another();
+    return 0;
+}
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/shared.hpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/shared.hpp
new file mode 100644
index 0000000..ef2d525
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/shared.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include <iostream>
+
+struct Test
+{
+    Test();
+};
+
+inline Test::Test()
+{
+    static int x = 0;
+    std::cout << ++x << '\n';
+}
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/main.cpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/main.cpp
new file mode 100644
index 0000000..7fbeb56
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/main.cpp
@@ -0,0 +1,11 @@
+#include "proxy.hpp"
+#include "shared.hpp"
+
+#include <iostream>
+
+int main()
+{
+    std::cout << shared() << '\n';
+    std::cout << proxy() << '\n';
+    return 0;
+}
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/proxy.cpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/proxy.cpp
new file mode 100644
index 0000000..a8eef26
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/proxy.cpp
@@ -0,0 +1,7 @@
+#include "proxy.hpp"
+#include "shared.hpp"
+
+int proxy()
+{
+    return shared();
+}
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/proxy.hpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/proxy.hpp
new file mode 100644
index 0000000..7dfc52a
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/proxy.hpp
@@ -0,0 +1,3 @@
+#pragma once
+
+int proxy();
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/shared.hpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/shared.hpp
new file mode 100644
index 0000000..6f812ab
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/shared.hpp
@@ -0,0 +1,7 @@
+#pragma once
+
+static int shared()
+{
+    static int n = 0;
+    return ++n;
+}
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/main.cpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/main.cpp
new file mode 100644
index 0000000..7fbeb56
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/main.cpp
@@ -0,0 +1,11 @@
+#include "proxy.hpp"
+#include "shared.hpp"
+
+#include <iostream>
+
+int main()
+{
+    std::cout << shared() << '\n';
+    std::cout << proxy() << '\n';
+    return 0;
+}
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/proxy.cpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/proxy.cpp
new file mode 100644
index 0000000..a8eef26
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/proxy.cpp
@@ -0,0 +1,7 @@
+#include "proxy.hpp"
+#include "shared.hpp"
+
+int proxy()
+{
+    return shared();
+}
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/proxy.hpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/proxy.hpp
new file mode 100644
index 0000000..7dfc52a
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/proxy.hpp
@@ -0,0 +1,3 @@
+#pragma once
+
+int proxy();
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/shared.hpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/shared.hpp
new file mode 100644
index 0000000..a669247
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/shared.hpp
@@ -0,0 +1,7 @@
+#pragma once
+
+static inline int shared()
+{
+    static int x = 0;
+    return ++x;
+}
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/main.cpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/main.cpp
new file mode 100644
index 0000000..7fbeb56
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/main.cpp
@@ -0,0 +1,11 @@
+#include "proxy.hpp"
+#include "shared.hpp"
+
+#include <iostream>
+
+int main()
+{
+    std::cout << shared() << '\n';
+    std::cout << proxy() << '\n';
+    return 0;
+}
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/proxy.cpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/proxy.cpp
new file mode 100644
index 0000000..a8eef26
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/proxy.cpp
@@ -0,0 +1,7 @@
+#include "proxy.hpp"
+#include "shared.hpp"
+
+int proxy()
+{
+    return shared();
+}
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/proxy.hpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/proxy.hpp
new file mode 100644
index 0000000..7dfc52a
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/proxy.hpp
@@ -0,0 +1,3 @@
+#pragma once
+
+int proxy();
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/shared.hpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/shared.hpp
new file mode 100644
index 0000000..c64cc41
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/shared.hpp
@@ -0,0 +1,10 @@
+#pragma once
+
+namespace
+{
+    inline int shared()
+    {
+        static int x = 0;
+        return ++x;
+    }
+}
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/another.cpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/another.cpp
new file mode 100644
index 0000000..10128ef
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/another.cpp
@@ -0,0 +1,18 @@
+#include "another.hpp"
+
+#include <iostream>
+
+namespace
+{
+    struct Test
+    {
+        Test() { std::cout << "another.cpp: Test::Test()\n"; }
+
+        float y = 1.;
+    };
+}
+
+void another()
+{
+    Test test;
+}
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/another.hpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/another.hpp
new file mode 100644
index 0000000..9c26d3f
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/another.hpp
@@ -0,0 +1,3 @@
+#pragma once
+
+void another();
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/main.cpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/main.cpp
new file mode 100644
index 0000000..c0c0664
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/main.cpp
@@ -0,0 +1,21 @@
+#include "another.hpp"
+
+#include <iostream>
+
+namespace
+{
+    struct Test
+    {
+        Test() { std::cout << "main.cpp: Test::Test()\n"; }
+
+        int x = 1;
+    };
+}
+
+int main()
+{
+    Test test;
+    std::cout << test.x << '\n';
+    another();
+    return 0;
+}
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/weird/another.cpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/weird/another.cpp
new file mode 100644
index 0000000..8a125ec
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/weird/another.cpp
@@ -0,0 +1,15 @@
+#include "another.hpp"
+
+#include <iostream>
+
+struct Test
+{
+    Test() { std::cout << "another.cpp: Test::Test()\n"; }
+
+    float y = 1.;
+};
+
+void another()
+{
+    Test test;
+}
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/weird/another.hpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/weird/another.hpp
new file mode 100644
index 0000000..9c26d3f
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/weird/another.hpp
@@ -0,0 +1,3 @@
+#pragma once
+
+void another();
diff --git a/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/weird/main.cpp b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/weird/main.cpp
new file mode 100644
index 0000000..8ab8fb8
--- /dev/null
+++ b/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/weird/main.cpp
@@ -0,0 +1,18 @@
+#include "another.hpp"
+
+#include <iostream>
+
+struct Test
+{
+    Test() { std::cout << "main.cpp: Test::Test()\n"; }
+
+    int x = 1;
+};
+
+int main()
+{
+    Test test;
+    std::cout << test.x << '\n';
+    another();
+    return 0;
+}
-- 
cgit v1.2.3