title: Matching boost:none in UTs
body: <p>I have a public function:</p>
  
  <pre><code>virtual void foo(boost::optional&lt;bar&gt; p_param) = 0;
  </code></pre>
  
  <p>and a mock for it:</p>
  
  <pre><code>MOCK_METHOD1(foo, void(boost::optional&lt;bar&gt;));  
  </code></pre>
  
  <p>When I write an expect-call like that:</p>
  
  <pre><code>EXPECT_CALL(aMock, foo(boost::none));
  </code></pre>
  
  <p>I get an error:</p>
  
  <pre><code> error: no matching function for call to 'testing::StrictMock&lt;AMockClass&gt;::gmock_foo(bar boost::detail::none_helper::* const&amp;)'
  </code></pre>
  
  <p>with information:</p>
  
  <pre><code>note: no known conversion for argument 1 from 'const none_t {aka int boost::detail::none_helper::* const}' to 'const testing::Matcher&lt;boost::optional&lt;bar&gt; &gt;&amp;'
  </code></pre>
  
  <p>However, when expect-call's arg is wrapped with Eq matcher:</p>
  
  <pre><code>EXPECT_CALL(aMock, foo(Eq(boost::none)));
  </code></pre>
  
  <p>The code compiles just fine. What's the root cause?</p>