|
1 |
| -<span class="hljs-keyword">template</span> <<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">T</span>></span> <span class="hljs-comment">// comment</span> |
| 1 | +<span class="hljs-keyword">template</span> <<span class="hljs-keyword">class</span> <span class="hljs-title hljs-title-class">T</span>> <span class="hljs-comment">// comment</span> |
2 | 2 | <span class="hljs-function"><span class="hljs-keyword">auto</span> <span class="hljs-title">foo</span><span class="hljs-params">(T x)</span> </span>{ ... };
|
3 | 3 |
|
4 | 4 | <span class="hljs-keyword">namespace</span> impl {
|
5 | 5 | <span class="hljs-keyword">template</span><<span class="hljs-keyword">typename</span> T>
|
6 |
| - <span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">is_streamable</span><</span>T, std::<span class="hljs-keyword">void_t</span><<span class="hljs-keyword">decltype</span>(std::declval<std::wostream &>() << std::declval<T>())>> : std::true_type { }; |
| 6 | + <span class="hljs-keyword">struct</span> <span class="hljs-title hljs-title-class">is_streamable</span><T, std::<span class="hljs-keyword">void_t</span><<span class="hljs-keyword">decltype</span>(std::declval<std::wostream &>() << std::declval<T>())>> : std::true_type { }; |
7 | 7 | }
|
8 | 8 |
|
9 | 9 | <span class="hljs-comment">// Disable overload for already valid operands.</span>
|
10 |
| -<span class="hljs-keyword">template</span><<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">T</span>, <span class="hljs-keyword">class</span> =</span> std::<span class="hljs-keyword">enable_if_t</span><!impl::is_streamable_v<<span class="hljs-keyword">const</span> T &> && std::is_convertible_v<<span class="hljs-keyword">const</span> T &, std::wstring_view>>> |
| 10 | +<span class="hljs-keyword">template</span><<span class="hljs-keyword">class</span> <span class="hljs-title hljs-title-class">T</span>, class = std::<span class="hljs-keyword">enable_if_t</span><!impl::is_streamable_v<<span class="hljs-keyword">const</span> T &> && std::is_convertible_v<<span class="hljs-keyword">const</span> T &, std::wstring_view>>> |
11 | 11 | std::wostream &<span class="hljs-keyword">operator</span> <<(std::wostream &stream, <span class="hljs-keyword">const</span> T &thing)
|
12 | 12 | {
|
13 | 13 | <span class="hljs-keyword">return</span> stream << <span class="hljs-keyword">static_cast</span><std::wstring_view>(thing);
|
14 | 14 | }
|
15 | 15 |
|
16 |
| -<span class="hljs-class"><span class="hljs-keyword">enum</span> <span class="hljs-keyword">struct</span> <span class="hljs-title">DataHolder</span> {</span> }; |
17 |
| -<span class="hljs-class"><span class="hljs-keyword">enum</span> <span class="hljs-keyword">class</span> <span class="hljs-title">DataThingy</span> {</span> }; |
18 |
| -<span class="hljs-class"><span class="hljs-keyword">enum</span> <span class="hljs-keyword">class</span> <span class="hljs-title">Boolean</span> :</span> <span class="hljs-keyword">char</span> { |
| 16 | +<span class="hljs-keyword">enum</span> <span class="hljs-title hljs-title-class"><span class="hljs-keyword">struct</span></span> DataHolder { }; |
| 17 | +<span class="hljs-keyword">enum</span> <span class="hljs-title hljs-title-class"><span class="hljs-keyword">class</span></span> DataThingy { }; |
| 18 | +<span class="hljs-keyword">enum</span> <span class="hljs-title hljs-title-class"><span class="hljs-keyword">class</span></span> Boolean : <span class="hljs-keyword">char</span> { |
19 | 19 | True, False, FileNotFound
|
20 | 20 | };
|
21 | 21 |
|
22 |
| -<span class="hljs-class"><span class="hljs-keyword">union</span> <span class="hljs-title">Soy</span> |
23 |
| -{</span> |
| 22 | +<span class="hljs-keyword">union</span> <span class="hljs-title hljs-title-class">Soy</span> |
| 23 | +{ |
24 | 24 | };
|
0 commit comments