### Godot version

master [f7bc653cbe81018fe362472a0143b7153a52f929]

### System information

Arch Linux (GCC 13.2.1)

### Issue description

Output:

```
In file included from tests/test_main.cpp:118:
./tests/servers/rendering/test_shader_preprocessor.h: In function 'bool TestShaderPreprocessor::is_operator_char(unsigned char)':
./tests/servers/rendering/test_shader_preprocessor.h:55:34: error: variable 'const std::string operators' has initializer but incomplete type
   55 |         static const std::string operators = "<>=+-*/";
      |                                  ^~~~~~~~~
./tests/servers/rendering/test_shader_preprocessor.h:56:50: error: incomplete type 'std::string' {aka 'std::__cxx11::basic_string<char>'} used in nested name specifier
   56 |         return operators.find(c) != std::string::npos;
      |                                                  ^~~~
scons: *** [tests/test_main.linuxbsd.editor.dev.x86_64.san.o] Error 1
scons: building terminated because of errors.
```

### Steps to reproduce

Compile the project. Probably needs GCC 13.

### Minimal reproduction project

N/A
#ifndef TEST_SHADER_PREPROCESSOR_H
#define TEST_SHADER_PREPROCESSOR_H
#include "servers/rendering/shader_preprocessor.h"
#include "tests/test_macros.h"
#include <cctype>
namespace TestShaderPreprocessor {
void erase_all_empty(Vector<String> &p_vec) {
	int idx = p_vec.find(" ");
	while (idx >= 0) {
		p_vec.remove_at(idx);
		idx = p_vec.find(" ");
	}
}
bool is_variable_char(unsigned char c) {
	return std::isalnum(c) || c == '_';
}
bool is_operator_char(unsigned char c) {
	static const std::string operators = "<>=+-*/";
	return operators.find(c) != std::string::npos;
}
String remove_spaces(String &p_str) {