title: msvc and fold expression
body: <p>I'm having trouble compiling this code on Windows.</p>
  <p>This code compile correctly on Linux, both with clang and gcc. I'm using msvc 19.29.</p>
  <p>Msvc exit with the not so helpful error C1001.</p>
  <pre class="lang-cpp prettyprint-override"><code>struct Object{};
  
  class Storage {
      Object &amp;createObject() {
          qStorrage.push_back(Object{});
          return qStorrage.back();
      }
  
      template &lt;class... Objs&gt;
      void deleteObject(const Objs&amp;...obj)
      {
          const auto e = std::remove_if(qStorrage.begin(), qStorrage.end(), [&amp;](const auto &amp;i) { return ((i == obj) || ...); });
          qStorrage.erase(e, qStorrage.end());
      }
  }
  </code></pre>
  <p>The goal is to be able to pass multiple reference of <code>Object</code> to be deleted, to avoid calling multiple time the same function.</p>
  <pre class="lang-cpp prettyprint-override"><code>Storage stor;
  
  auto a = stor.create();
  auto b = stor.create();
  
  stor.delete(a, b);
  </code></pre>
  <p>Do you know why MSVC fail to compile this ?</p>
  <p>EDIT :</p>
  <p>Here is the actual files:</p>
  <p><a href="https://github.com/zcorniere/logger-cpp/blob/windows/include/Logger.hpp" rel="nofollow noreferrer">https://github.com/zcorniere/logger-cpp/blob/windows/include/Logger.hpp</a></p>
  <p><a href="https://github.com/zcorniere/logger-cpp/blob/windows/example/example.cpp" rel="nofollow noreferrer">https://github.com/zcorniere/logger-cpp/blob/windows/example/example.cpp</a></p>
  <p>build with cmake with parameter BUILD_EXAMPLE turned ON</p>
  <p>EDIT2:
  Here is msvc error message, sorry I forgot about it</p>
  <pre><code>message : This diagnostic occurred in the compiler generated function 'bool ProgressBar::operator ==(const ProgressBar &amp;) const' [C:\Users\Zacharie Corniere\Documents\GitHub\logger-cpp\build\example\example.vcxproj]
  [build] C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\xmemory(1967): message : see reference to function template instantiation 'bool Logger::deleteProgressBar::&lt;lambda_1&gt;::operator ()&lt;ProgressBar&gt;(const _T1 &amp;) const' being compiled [logger-cpp\build\example\example.vcxproj]
  [build]           with
  [build]           [
  [build]               _T1=ProgressBar
  [build]           ]
  [build] logger-cpp\include\Logger.hpp(51): message : see reference to function template instantiation '_FwdIt std::remove_if&lt;std::_Deque_iterator&lt;std::_Deque_val&lt;std::_Deque_simple_types&lt;_Ty&gt;&gt;&gt;,Logger::deleteProgressBar::&lt;lambda_1&gt;&gt;(_FwdIt,const _FwdIt,_Pr)' being compiled [logger-cpp\build\example\example.vcxproj]
  [build]           with
  [build]           [
  [build]               _FwdIt=std::_Deque_iterator&lt;std::_Deque_val&lt;std::_Deque_simple_types&lt;ProgressBar&gt;&gt;&gt;,
  [build]               _Ty=ProgressBar,
  [build]               _Pr=Logger::deleteProgressBar::&lt;lambda_1&gt;
  [build]           ]
  </code></pre>