diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f56cb37dce3d2571b4b25df8ec2d98d7f0ed305e..c2e62475ce4a500e518d726a9d54ee51aba73dd5 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,4 +1,4 @@
-image: "flowdalic/debian-testing-dev:1.17"
+image: "flowdalic/debian-testing-dev:1.19"
 
 before_script:
   - ulimit -a
@@ -97,6 +97,14 @@ clang-tidy:
     CC: clang
     CXX: clang++
 
+.libc++:
+  extends:
+    - .clang
+  variables:
+    EMPER_USE_BUNDLED_DEPS: "always"
+    EMPER_CPP_ARGS: "-stdlib=libc++"
+    EMPER_CPP_LINK_ARGS: "-stdlib=libc++"
+
 .emper-ws-scheduling:
   variables:
     EMPER_DEFAULT_SCHEDULING_STRATEGY: "work_stealing"
@@ -253,6 +261,17 @@ test-clang-debug:
     - test-clang
     - .debug-build
 
+smoke-test-libc++:
+  stage: smoke-test
+  extends:
+    - .fast-variant-check
+    - .libc++
+
+test-libc++:
+  extends:
+    - .test
+    - .libc++
+
 test-worker-no-sleep:
   extends:
     - .test
diff --git a/Makefile b/Makefile
index 357b3ecb9f2ff744e10a26541090d66f5cae0775..fa4c7e7fe03ebf2b9964a64fdd8d995b2574f383 100644
--- a/Makefile
+++ b/Makefile
@@ -34,6 +34,15 @@ debug:
 	rm -f build
 	$(MAKE) build BUILDTYPE=$@
 
+libc++:
+	rm -f build
+	$(MAKE) build \
+		CC=clang CXX=clang++ \
+		EMPER_CPP_ARGS="-stdlib=libc++" \
+		EMPER_CPP_LINK_ARGS="-stdlib=libc++" \
+		EMPER_USE_BUNDLED_DEPS="always" \
+		BUILDDIR="build-libc++"
+
 .PHONY: fast-static-analysis
 fast-static-analysis: all check-format check-license doc
 
diff --git a/emper/log/log.cpp b/emper/log/log.cpp
index 0f953d1ebaf07c56573336c1565d0c1a23bc1235..c35997315ced171bc9b24fd0b20429f907594ff5 100644
--- a/emper/log/log.cpp
+++ b/emper/log/log.cpp
@@ -21,11 +21,12 @@
 
 using emper::io::GlobalIoContext;
 
-static const long NanosInAMinute = 60L * 1000 * 1000 * 1000;
-
 namespace emper::log {
 
 static void add_timestamp_to(std::ostringstream& logMessage) {
+#if defined __GLIBCXX__
+	static const long NanosInAMinute = 60L * 1000 * 1000 * 1000;
+
 	auto now = std::chrono::high_resolution_clock::now();
 
 	auto now_time_t = std::chrono::high_resolution_clock::to_time_t(now);
@@ -53,6 +54,9 @@ static void add_timestamp_to(std::ostringstream& logMessage) {
 
 	long remaining_nanos = time_since_epoch_long % NanosInAMinute;
 	logMessage << remaining_nanos;
+#else
+	logMessage << "UNKN_TIME";
+#endif
 }
 
 static std::mutex log_mutex;