File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 66
77namespace ext ::util {
88
9+ // Usage:
10+ // template<template_string_literal lit>
11+ // struct example_class {
12+ // const std::string name = lit.value;
13+ // };
14+
915// c++20 -- class types in non-type template parameters
16+ // https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0732r2.pdf
1017template <std::size_t N>
1118struct template_string_literal {
1219 constexpr template_string_literal (const char (&str)[N]) {
Original file line number Diff line number Diff line change @@ -39,6 +39,7 @@ set(test-files
3939 "util_serialization"
4040 "util_show"
4141 "util_string"
42+ "util_template_string_literal"
4243 "util_tuple"
4344 "util_windows_strings"
4445)
Original file line number Diff line number Diff line change 1+ // Copyright - 2020 - Jan Christoph Uhde <Jan@UhdeJC.com>
2+ // Please see LICENSE.md for license or visit https://github.com/extcpp/basics
3+ #include < gtest/gtest.h>
4+
5+ #include < ext/util/template_string_literal.hpp>
6+
7+ using namespace ext ::util;
8+
9+ template <template_string_literal lit>
10+ struct example_class {
11+ const std::string name = lit.value;
12+ };
13+
14+ TEST (util_template_string_literal, error_to_string) {
15+ example_class<" foo" > actual;
16+ ASSERT_EQ (actual.name , " foo" );
17+ }
You can’t perform that action at this time.
0 commit comments