kakoune/src
Johannes Altmanninger 8a7109f9c5 Fix compilation due to failing template deduction for aggregates
gcc 11.2.0 compiles us just fine but clang 13.0.1 fails with this error

	clang++ -DKAK_DEBUG -O0 -pedantic -std=c++2a -g -Wall -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-address -frelaxed-template-template-args -Wno-ambiguous-reversed-operator -MD -MP -MF .ranges.debug.d -c -o .ranges.debug.o ranges.cc
	ranges.cc:30:17: error: no viable constructor or deduction guide for deduction of template arguments of 'Array'
	    check_equal(Array{{""_sv, "abc"_sv, ""_sv, "def"_sv, ""_sv}} | flatten(), "abcdef"_sv);
	                ^
	./constexpr_utils.hh:14:8: note: candidate template ignored: couldn't infer template argument 'T'
	struct Array
	       ^
	./constexpr_utils.hh:14:8: note: candidate function template not viable: requires 0 arguments, but 1 was provided
	1 error generated.

The same error can be reproduced with this C++ input

	template<typename T, int N>
	struct Array
	{
	    T m_data[N];
	};
	void test() {
	    (void)Array{{1, 2}};
	}

Since "Array" has no constructor, the compiler uses aggregate
initialization. Only recent g++ seems to be smart enough to deduce
template arguments in this case. Help other compilers by adding a
deduction guide. The deduction guide needs to count the array elements
to infer the array size, hence we need to remove braces. Happily,
this is allowed and it's also what std::array does.

Closes #4597
2022-04-28 19:34:36 +02:00
..
.gdbinit
alias_registry.cc
alias_registry.hh
array_view.hh Replace std::enable_if with requires 2021-11-21 09:44:56 +11:00
assert.cc
assert.hh
backtrace.cc
backtrace.hh
buffer_manager.cc Support opening files bigger than 2 GiB 2021-05-28 17:03:41 +10:00
buffer_manager.hh Remove unnecessary forward declaration 2021-07-20 22:30:41 +10:00
buffer_utils.cc Fix File Buffer flag not being correctly applied 2021-05-28 20:31:28 +10:00
buffer_utils.hh rework selection insert/replace using a for_each method 2021-09-30 20:12:58 +10:00
buffer.cc Remove unnecessary workaround in Buffer::insert 2022-02-22 08:28:33 +11:00
buffer.hh Convert comparisons to spaceship operator 2021-11-21 09:44:56 +11:00
buffer.inl.hh Convert comparisons to spaceship operator 2021-11-21 09:44:56 +11:00
changes.cc
changes.hh Binary search for first range to change 2021-03-08 16:55:43 -05:00
client_manager.cc Move control character escaping responsibility to the terminal UI 2021-08-17 20:40:30 +10:00
client_manager.hh Always redraw after getting some user input 2021-03-11 09:08:35 +11:00
client.cc src: Show a readonly modeline tag when relevant 2021-09-21 12:59:30 +03:00
client.hh
clock.hh
color.cc Make Color::validate_alpha() a constexpr function. 2022-02-12 21:35:33 +11:00
color.hh Make Color::validate_alpha() a constexpr function. 2022-02-12 21:35:33 +11:00
command_manager.cc Fix buffer overflow in parse_quoted 2022-03-08 09:05:10 -08:00
command_manager.hh Add a complete-command command to configure command completion 2022-03-06 10:13:14 +11:00
commands.cc Introduce a flatten range adapter and use it in execute_keys_cmd 2022-04-25 19:27:16 +10:00
commands.hh
completion.cc
completion.hh Restore auto-select on return, add a flag to disable that for commands 2020-11-18 19:56:05 +11:00
constexpr_utils.hh Fix compilation due to failing template deduction for aggregates 2022-04-28 19:34:36 +02:00
context.cc src: Allow ga to skip removed buffers 2021-10-06 08:44:47 +02:00
context.hh src: Allow ga to skip removed buffers 2021-10-06 08:44:47 +02:00
coord.hh Convert comparisons to spaceship operator 2021-11-21 09:44:56 +11:00
diff.hh Remove posB from information given by the diff algorithm 2020-03-20 20:27:50 +11:00
display_buffer.cc Support info markup spanning multiple lines 2021-08-28 13:53:23 +10:00
display_buffer.hh Support info markup spanning multiple lines 2021-08-28 13:53:23 +10:00
enum.hh Replace std::enable_if with requires 2021-11-21 09:44:56 +11:00
env_vars.cc
env_vars.hh
event_manager.cc Do not select on non-urgent fd when handling only urgent events 2021-03-11 09:02:02 +11:00
event_manager.hh Add support for $kak_command_fifo and $kak_response_fifo 2021-07-07 19:25:06 +10:00
exception.cc
exception.hh
face_registry.cc Faces: Check that underline colour comes before base/attributes markers 2022-02-11 09:35:49 +00:00
face_registry.hh
face.hh Add support for curly underline and separate underline color 2021-09-07 08:21:26 +10:00
file.cc Close MappedFile fd using on_scope_end to handle all return paths 2022-03-06 10:13:14 +11:00
file.hh Do not keep MappedFile fd opened 2022-02-18 20:24:23 +11:00
flags.hh Replace std::enable_if with requires 2021-11-21 09:44:56 +11:00
hash_map.cc
hash_map.hh Replace std::enable_if with requires 2021-11-21 09:44:56 +11:00
hash.cc Support opening files bigger than 2 GiB 2021-05-28 17:03:41 +10:00
hash.hh Replace std::enable_if with requires 2021-11-21 09:44:56 +11:00
highlighter_group.cc Add -override support to add-highlighter 2020-03-30 21:04:01 +11:00
highlighter_group.hh Rename DefinedHighlighters to SharedHighlighters 2020-08-08 11:19:02 +10:00
highlighter.cc Add -override support to add-highlighter 2020-03-30 21:04:01 +11:00
highlighter.hh src highlighters: Factorise docstrings 2021-11-05 11:30:35 +03:00
highlighters.cc Use std::remove_cvref instead of std::decay 2021-11-21 09:44:57 +11:00
highlighters.hh Use inplace_merge() for ranges 2021-03-09 10:13:31 -05:00
hook_manager.cc Add a range based remove_if overload 2020-05-29 11:59:03 +10:00
hook_manager.hh Add a RegisterModified hook 2020-07-19 12:56:55 +10:00
input_handler.cc Fix crash when deleting a buffer from a user mapping 2022-04-12 12:49:19 +10:00
input_handler.hh Split InsertMode into InsertMode and PasteMode 2021-10-10 11:02:09 +11:00
insert_completer.cc Merge remote-tracking branch 'krobelus/c-n-autocomplete' 2022-02-15 20:51:11 +11:00
insert_completer.hh Do not show custom completions when autocomplete is off 2022-01-09 20:23:51 +01:00
json_ui.cc Add support for curly underline and separate underline color 2021-09-07 08:21:26 +10:00
json_ui.hh
json.cc Fix spurious warning likely due to String::Data not being std compliant 2021-12-11 08:44:19 +11:00
json.hh
keymap_manager.cc
keymap_manager.hh src: Fix the API of KeymapManager::add_user_mode() 2021-10-23 10:34:27 +02:00
keys.cc Make space a named key to correctly handle shift modifier 2021-12-11 08:12:08 +11:00
keys.hh Make space a named key to correctly handle shift modifier 2021-12-11 08:12:08 +11:00
line_modification.cc Support opening files bigger than 2 GiB 2021-05-28 17:03:41 +10:00
line_modification.hh
main.cc Document ! and <a-!> breaking change 2022-03-06 10:13:14 +11:00
Makefile Fix clang C++20 compilation issues 2021-11-21 20:06:14 +11:00
memory.cc
memory.hh always inline custom operator new/delete to avoid spurious warnings 2021-07-26 16:55:36 +10:00
meta.hh
normal.cc Code style cleanups around object selection code 2022-04-11 19:49:36 +10:00
normal.hh
option_manager.cc
option_manager.hh Add support for removing from options 2020-09-09 21:00:30 +10:00
option_types.cc Use std::remove_cvref instead of std::decay 2021-11-21 09:44:57 +11:00
option_types.hh Replace std::enable_if with requires 2021-11-21 09:44:56 +11:00
option.hh Add support for removing from options 2020-09-09 21:00:30 +10:00
optional.hh Avoid copying token content strings in expand_token 2021-07-09 17:03:22 +10:00
parameters_parser.cc
parameters_parser.hh
range.hh Refactor how InsetCompletionHide hook parameter is computed 2020-06-27 13:33:50 +10:00
ranges.cc Fix compilation due to failing template deduction for aggregates 2022-04-28 19:34:36 +02:00
ranges.hh Introduce a flatten range adapter and use it in execute_keys_cmd 2022-04-25 19:27:16 +10:00
ranked_match.cc Bug fix: use only iswlower() in RankedMatch::is_word_boundary() 2021-12-14 15:10:01 +05:30
ranked_match.hh
ref_ptr.hh Fix crash when deleting a buffer from a user mapping 2022-04-12 12:49:19 +10:00
regex_impl.cc Fix regex alternation execution priority 2022-02-02 14:51:17 +11:00
regex_impl.hh Fix regex alternation execution priority 2022-02-02 14:51:17 +11:00
regex.cc
regex.hh
register_manager.cc Do not trigger RegisterModified hooks on register about to be restored 2020-07-21 20:27:42 +10:00
register_manager.hh commands: add "registers" subcommand to :debug 2020-12-23 14:22:44 -08:00
remote.cc Check for buffer overflow when constructing the socket path. 2022-04-07 21:36:15 +10:00
remote.hh Rework session directory logic 2021-05-01 15:29:50 +10:00
safe_ptr.hh
scope.cc Do not include non-primitive option value in *SetOption hook filter 2020-06-09 21:38:47 +10:00
scope.hh
selection.cc src: Select the data inserted by ! and <a-!> 2022-03-06 10:13:14 +11:00
selection.hh src: Select the data inserted by ! and <a-!> 2022-03-06 10:13:14 +11:00
selectors.cc Ensure that the capture group actually matched in select_matches 2020-09-22 21:14:40 +10:00
selectors.hh Ensure that the capture group actually matched in select_matches 2020-09-22 21:14:40 +10:00
shared_string.cc
shared_string.hh src: Fix undefined behaviour 2021-10-23 10:36:37 +02:00
shell_manager.cc Use strerror to display execve failures 2022-01-24 21:59:16 +11:00
shell_manager.hh Expand env vars as list of strings 2020-03-02 20:53:28 +11:00
string_utils.cc Add a complete-command command to configure command completion 2022-03-06 10:13:14 +11:00
string_utils.hh More C++20 refactorings 2021-11-21 11:41:50 +11:00
string.cc Improve code-generation for Strings 2021-07-20 22:30:41 +10:00
string.hh Add a complete-command command to configure command completion 2022-03-06 10:13:14 +11:00
terminal_ui.cc Make space a named key to correctly handle shift modifier 2021-12-11 08:12:08 +11:00
terminal_ui.hh Use DECRQM/DECRPM to detect support for synchronized output 2021-10-23 09:42:31 +11:00
unicode.hh Follow ECMA specification for regex whitespace 2021-02-25 11:03:18 -05:00
unit_tests.cc Remove posB from information given by the diff algorithm 2020-03-20 20:27:50 +11:00
unit_tests.hh
units.hh Try to fix more CI failures related to C++20 2021-11-21 20:16:58 +11:00
user_interface.hh
utf8_iterator.hh Convert comparisons to spaceship operator 2021-11-21 09:44:56 +11:00
utf8.hh
utils.hh Clang is still unhappy, trying another approach with defining my own concept 2021-11-25 22:32:10 +11:00
value.hh Use std::remove_cvref instead of std::decay 2021-11-21 09:44:57 +11:00
vector.hh Only redraw updated lines 2021-07-12 10:25:58 +10:00
window.cc Grammar 2021-10-07 04:57:29 +02:00
window.hh
word_db.cc Support opening files bigger than 2 GiB 2021-05-28 17:03:41 +10:00
word_db.hh Fix performance issue with word completion 2020-11-07 10:42:51 +11:00