aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces
diff options
context:
space:
mode:
authorEgor Tensin <egor@tensin.name>2026-06-06 22:23:54 +0200
committerEgor Tensin <egor@tensin.name>2026-06-06 22:24:45 +0200
commitbe5e0048913797f2ef91065908730da025113c34 (patch)
treedd16e4908bb93953dbc823d7624f76c363a00bf4 /src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces
parentbump dependencies (diff)
downloadblog-be5e0048913797f2ef91065908730da025113c34.tar.gz
blog-be5e0048913797f2ef91065908730da025113c34.zip
move Jekyll source files to src/
Diffstat (limited to 'src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces')
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/shared.hpp6
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/another.cpp11
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/another.hpp3
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/main.cpp13
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/another.cpp6
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/another.hpp3
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/main.cpp8
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/shared.hpp12
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/main.cpp10
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/proxy.cpp6
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/proxy.hpp3
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/shared.hpp6
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/main.cpp10
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/proxy.cpp6
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/proxy.hpp3
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/shared.hpp6
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/main.cpp10
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/proxy.cpp6
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/proxy.hpp3
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/shared.hpp10
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/another.cpp19
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/another.hpp3
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/main.cpp22
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/weird/another.cpp15
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/weird/another.hpp3
-rw-r--r--src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/weird/main.cpp18
26 files changed, 221 insertions, 0 deletions
diff --git a/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/shared.hpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/shared.hpp
new file mode 100644
index 0000000..796ea85
--- /dev/null
+++ b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/shared.hpp
@@ -0,0 +1,6 @@
+#pragma once
+
+inline int shared() {
+ static int n = 0;
+ return ++n;
+}
diff --git a/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/another.cpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/another.cpp
new file mode 100644
index 0000000..330ba80
--- /dev/null
+++ b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/another.cpp
@@ -0,0 +1,11 @@
+#include "another.hpp"
+
+#include <iostream>
+
+inline void shared() {
+ std::cout << "another.cpp: shared()\n";
+}
+
+void another() {
+ shared();
+}
diff --git a/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/another.hpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/another.hpp
new file mode 100644
index 0000000..9c26d3f
--- /dev/null
+++ b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/another.hpp
@@ -0,0 +1,3 @@
+#pragma once
+
+void another();
diff --git a/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/main.cpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/main.cpp
new file mode 100644
index 0000000..e278b9f
--- /dev/null
+++ b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/inline/weird/main.cpp
@@ -0,0 +1,13 @@
+#include "another.hpp"
+
+#include <iostream>
+
+inline void shared() {
+ std::cout << "main.cpp: shared()\n";
+}
+
+int main() {
+ shared();
+ another();
+ return 0;
+}
diff --git a/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/another.cpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/another.cpp
new file mode 100644
index 0000000..f13b3a1
--- /dev/null
+++ b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/another.cpp
@@ -0,0 +1,6 @@
+#include "another.hpp"
+#include "shared.hpp"
+
+void another() {
+ Test test;
+}
diff --git a/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/another.hpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/another.hpp
new file mode 100644
index 0000000..9c26d3f
--- /dev/null
+++ b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/another.hpp
@@ -0,0 +1,3 @@
+#pragma once
+
+void another();
diff --git a/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/main.cpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/main.cpp
new file mode 100644
index 0000000..b3118c1
--- /dev/null
+++ b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/main.cpp
@@ -0,0 +1,8 @@
+#include "another.hpp"
+#include "shared.hpp"
+
+int main() {
+ Test test;
+ another();
+ return 0;
+}
diff --git a/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/shared.hpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/shared.hpp
new file mode 100644
index 0000000..ef4da34
--- /dev/null
+++ b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/separate_method_definitions/shared.hpp
@@ -0,0 +1,12 @@
+#pragma once
+
+#include <iostream>
+
+struct Test {
+ Test();
+};
+
+inline Test::Test() {
+ static int x = 0;
+ std::cout << ++x << '\n';
+}
diff --git a/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/main.cpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/main.cpp
new file mode 100644
index 0000000..fde1a43
--- /dev/null
+++ b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/main.cpp
@@ -0,0 +1,10 @@
+#include "proxy.hpp"
+#include "shared.hpp"
+
+#include <iostream>
+
+int main() {
+ std::cout << shared() << '\n';
+ std::cout << proxy() << '\n';
+ return 0;
+}
diff --git a/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/proxy.cpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/proxy.cpp
new file mode 100644
index 0000000..78e4611
--- /dev/null
+++ b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/proxy.cpp
@@ -0,0 +1,6 @@
+#include "proxy.hpp"
+#include "shared.hpp"
+
+int proxy() {
+ return shared();
+}
diff --git a/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/proxy.hpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/proxy.hpp
new file mode 100644
index 0000000..7dfc52a
--- /dev/null
+++ b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/proxy.hpp
@@ -0,0 +1,3 @@
+#pragma once
+
+int proxy();
diff --git a/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/shared.hpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/shared.hpp
new file mode 100644
index 0000000..647f49e
--- /dev/null
+++ b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static/shared.hpp
@@ -0,0 +1,6 @@
+#pragma once
+
+static int shared() {
+ static int n = 0;
+ return ++n;
+}
diff --git a/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/main.cpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/main.cpp
new file mode 100644
index 0000000..fde1a43
--- /dev/null
+++ b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/main.cpp
@@ -0,0 +1,10 @@
+#include "proxy.hpp"
+#include "shared.hpp"
+
+#include <iostream>
+
+int main() {
+ std::cout << shared() << '\n';
+ std::cout << proxy() << '\n';
+ return 0;
+}
diff --git a/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/proxy.cpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/proxy.cpp
new file mode 100644
index 0000000..78e4611
--- /dev/null
+++ b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/proxy.cpp
@@ -0,0 +1,6 @@
+#include "proxy.hpp"
+#include "shared.hpp"
+
+int proxy() {
+ return shared();
+}
diff --git a/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/proxy.hpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/proxy.hpp
new file mode 100644
index 0000000..7dfc52a
--- /dev/null
+++ b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/proxy.hpp
@@ -0,0 +1,3 @@
+#pragma once
+
+int proxy();
diff --git a/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/shared.hpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/shared.hpp
new file mode 100644
index 0000000..28de441
--- /dev/null
+++ b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/static_and_inline/shared.hpp
@@ -0,0 +1,6 @@
+#pragma once
+
+static inline int shared() {
+ static int x = 0;
+ return ++x;
+}
diff --git a/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/main.cpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/main.cpp
new file mode 100644
index 0000000..fde1a43
--- /dev/null
+++ b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/main.cpp
@@ -0,0 +1,10 @@
+#include "proxy.hpp"
+#include "shared.hpp"
+
+#include <iostream>
+
+int main() {
+ std::cout << shared() << '\n';
+ std::cout << proxy() << '\n';
+ return 0;
+}
diff --git a/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/proxy.cpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/proxy.cpp
new file mode 100644
index 0000000..78e4611
--- /dev/null
+++ b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/proxy.cpp
@@ -0,0 +1,6 @@
+#include "proxy.hpp"
+#include "shared.hpp"
+
+int proxy() {
+ return shared();
+}
diff --git a/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/proxy.hpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/proxy.hpp
new file mode 100644
index 0000000..7dfc52a
--- /dev/null
+++ b/src/_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/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/shared.hpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespace_and_inline/shared.hpp
new file mode 100644
index 0000000..e21a00c
--- /dev/null
+++ b/src/_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/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/another.cpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/another.cpp
new file mode 100644
index 0000000..cc7556d
--- /dev/null
+++ b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/another.cpp
@@ -0,0 +1,19 @@
+#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/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/another.hpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/another.hpp
new file mode 100644
index 0000000..9c26d3f
--- /dev/null
+++ b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/another.hpp
@@ -0,0 +1,3 @@
+#pragma once
+
+void another();
diff --git a/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/main.cpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/main.cpp
new file mode 100644
index 0000000..e383ded
--- /dev/null
+++ b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/ok/main.cpp
@@ -0,0 +1,22 @@
+#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/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/weird/another.cpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/weird/another.cpp
new file mode 100644
index 0000000..0e0bff9
--- /dev/null
+++ b/src/_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/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/weird/another.hpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/weird/another.hpp
new file mode 100644
index 0000000..9c26d3f
--- /dev/null
+++ b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/weird/another.hpp
@@ -0,0 +1,3 @@
+#pragma once
+
+void another();
diff --git a/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/weird/main.cpp b/src/_posts/snippets/static_vs_inline_vs_unnamed_namespaces/unnamed_namespaces/weird/main.cpp
new file mode 100644
index 0000000..abd42b7
--- /dev/null
+++ b/src/_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;
+}