title: namespace std has no member std::invoke_result_t
body: <p>I recently switched to VS Code from MSVS due to personal reasons, and my compiler is the latest Clang now. </p>
  
  <p>I had some troubles (for example, I can't write <code>typename O = ...</code>, now I have to write <code>typename O = typename ...</code>), but all of them are small and easy to fix. Except one.</p>
  
  <p>I don't know the reason, but compiler can't find <code>std::invoke_result_t</code> and <code>std::invoke_result&lt;&gt;::type</code>. It's disgusting a lot, especially because IntelliSense finds it easy.</p>
  
  <p>Here's error log:</p>
  
  <pre><code>{"Workspace" directory}/Untitled-1.cpp:5:54: error: no template named 'invoke_result_t' in namespace 'std'; did you mean '_Invoke_result_t'?
  template&lt;typename I, typename FTy, typename O = std::invoke_result_t&lt;std::function&lt;FTy&gt;, I&gt;&gt;
                                                  ~~~~~^~~~~~~~~~~~~~~
                                                       _Invoke_result_t
  {MSVS Installation directory}\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\include\type_traits:1832:2: note: '_Invoke_result_t' declared here
          using _Invoke_result_t = typename _Invoke_traits&lt;void, _Callable, _Args...&gt;::type;
          ^
  1 error generated.
  </code></pre>
  
  <p>If I use offered <code>std::_Invoke_result_t</code> instead of normal one, everything compiles and works as it should.</p>
  
  <p>Also, every time I compile my code, that contains <code>std::cout</code>, compiler write that some locally defined symbols (_CxxThrowException and _std_terminate, to be honest) were imported to functions from .</p>
  
  <p>Is there any way to fix all these troubles? Which of them are bugs and which are features? I heard, VS C++ libraries don't accomplish to ISO standard, does it may be reason of my troubles?</p>