### 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
const String filename("somefile.gdshader");
	String result;
	ShaderPreprocessor preprocessor;
	preprocessor.preprocess("#define X ###\nX\n", filename, result);
	preprocessor.preprocess("#define X ####\nX\n", filename, result);
	preprocessor.preprocess("#define X #####\nX\n", filename, result);
	preprocessor.preprocess("#define X 1 ### 2\nX\n", filename, result);
	preprocessor.preprocess("#define X 1 #### 2\nX\n", filename, result);
	preprocessor.preprocess("#define X 1 ##### 2\nX\n", filename, result);
	preprocessor.preprocess("#define X ### 2\nX\n", filename, result);
	preprocessor.preprocess("#define X #### 2\nX\n", filename, result);
	preprocessor.preprocess("#define X ##### 2\nX\n", filename, result);
	preprocessor.preprocess("#define X 1 ###\nX\n", filename, result);
	preprocessor.preprocess("#define X 1 ####\nX\n", filename, result);
	preprocessor.preprocess("#define X 1 #####\nX\n", filename, result);
}
TEST_CASE("[ShaderPreprocessor] Invalid concatenations") {
	const String filename("somefile.gdshader");
	String result;
	ShaderPreprocessor preprocessor;
	CHECK_NE(preprocessor.preprocess("#define X ##", filename, result), Error::OK);
	CHECK_NE(preprocessor.preprocess("#define X 1 ##", filename, result), Error::OK);
	CHECK_NE(preprocessor.preprocess("#define X ## 1", filename, result), Error::OK);
	CHECK_NE(preprocessor.preprocess("#define X(y)   ##  ", filename, result), Error::OK);
	CHECK_NE(preprocessor.preprocess("#define X(y) y ##  ", filename, result), Error::OK);
	CHECK_NE(preprocessor.preprocess("#define X(y) ## y", filename, result), Error::OK);
}
} 
#endif