Add import std support to MSVC.
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index 98cc4a3..a80f612 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -3306,6 +3306,23 @@
             istd_args = ['-fmodules']
             istd_dep = [mod_file]
             return istd_args, istd_dep
+        elif compiler.id == 'msvc':
+            if not hasattr(self, 'istd_gen_target'):
+                mod_file = 'std.ifc'
+                mod_obj_file = 'std.obj'
+                in_file = Path(os.environ['VCToolsInstallDir']) / 'modules/std.ixx'
+                if not in_file.is_file():
+                    raise SystemExit('VS std import header could not be located.')
+                in_file_str = str(in_file)
+                elem = NinjaBuildElement(self.all_outputs, [mod_file, mod_obj_file], 'CUSTOM_COMMAND', [in_file_str])
+                compile_args = compiler.get_option_compile_args(target, self.environment)
+                compile_args += compiler.get_option_std_args(target, self.environment)
+                compile_args += ['/nologo', '/c', '/O2', in_file_str]
+                elem.add_item('COMMAND', compiler.exelist + compile_args)
+                self.add_build(elem)
+                self.istd_gen_target = elem
+            istd_dep = [File(True, '', mod_file)]
+            return istd_args, istd_dep
         else:
             raise SystemExit(f'Import std not supported on compiler {compiler.id} yet.')
 
diff --git a/mesonbuild/compilers/cpp.py b/mesonbuild/compilers/cpp.py
index 9207bbd..c4a1b1d 100644
--- a/mesonbuild/compilers/cpp.py
+++ b/mesonbuild/compilers/cpp.py
@@ -820,6 +820,13 @@
         std_opt = opts[self.form_compileropt_key('std')]
         assert isinstance(std_opt, options.UserStdOption), 'for mypy'
         std_opt.set_versions(cpp_stds)
+
+        if version_compare(self.version, '>=19.44.35219'):
+            key = self.form_compileropt_key('importstd')
+            opts[key] = options.UserComboOption(self.make_option_name(key),
+                                                'Use #import std.',
+                                                'false',
+                                                choices=['false', 'true'])
         return opts
 
     def get_option_compile_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]:
diff --git a/test cases/common/286 importstd/meson.build b/test cases/common/286 importstd/meson.build
index d5221cd..c184efe 100644
--- a/test cases/common/286 importstd/meson.build
+++ b/test cases/common/286 importstd/meson.build
@@ -1,10 +1,12 @@
 project('importstd', 'cpp', default_options: {'cpp_importstd': 'true', 
-                                              'cpp_std': 'c++23'})
+                                              'cpp_std': 'c++latest,c++23'})
 
 cpp = meson.get_compiler('cpp')
 
 if cpp.get_id() == 'gcc' and cpp.version().version_compare('>=15.1')
   istd_supported = true
+elif cpp.get_id() == 'msvc' and cpp.version().version_compare('>=19.44')
+  istd_supported = true
 else
   istd_supported = false
 endif