<p>In <a href="https://github.com/mlpack/mlpack/pull/762#discussion_r75572810">src/mlpack/methods/neighbor_search/neighbor_search.hpp</a>:</p>
<pre style='color:#555'>&gt; @@ -309,14 +412,21 @@ class NeighborSearch
&gt;    //! Return the number of node combination scores during the last search.
&gt;    size_t Scores() const { return scores; }
&gt;  
&gt; +  //! Access the search mode.
&gt; +  NeighborSearchMode SearchMode() const { return searchMode; }
&gt; +  //! Modify the search mode.
&gt; +  void SetSearchMode(const NeighborSearchMode mode);
</pre>
<p>You're right; I thought there was a way to work around this problem but really there is not a good one.  What I really want to avoid is making an API change that we'll regret later (like <code>SetSearchMode()</code>).  So if we are going to break reverse compatibility in 3.0.0, then I would say maybe the easiest thing to do here is just add a <code>greedy</code> boolean parameter that works the same way as <code>singleMode</code> and <code>naive</code>, and use that for now.  Then, when we release 3.0.0, we'll remove all three of those and <em>only</em> have <code>searchMode</code> in the way you've written here.  This would allow us to avoid the weird stuff we have to do for reverse compatibility.</p>

<p>I guess, if you agree with that, then we should save your commits for refactoring by opening another reverse-incompatible "3.0.0 PR" that will be merged in when we decide it is time for a release there.</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">&mdash;<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/mlpack/mlpack/pull/762/files/f8ddd58ece06362024944a6533f68074a6b27ef7#r75572810">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AJ4bFKg58H5PFkBYKHbx3zvWxnwLzHD5ks5qhoo1gaJpZM4JlKcS">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/AJ4bFBnEZ7c7fXoaRVEgfd9207uUk3oBks5qhoo1gaJpZM4JlKcS.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/mlpack/mlpack/pull/762/files/f8ddd58ece06362024944a6533f68074a6b27ef7#r75572810"></link>
  <meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>

<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/mlpack/mlpack","title":"mlpack/mlpack","subtitle":"GitHub repository","main_image_url":"https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/mlpack/mlpack"}},"updates":{"snippets":[{"icon":"PERSON","message":"@rcurtin in #762: You're right; I thought there was a way to work around this problem but really there is not a good one.  What I really want to avoid is making an API change that we'll regret later (like `SetSearchMode()`).  So if we are going to break reverse compatibility in 3.0.0, then I would say maybe the easiest thing to do here is just add a `greedy` boolean parameter that works the same way as `singleMode` and `naive`, and use that for now.  Then, when we release 3.0.0, we'll remove all three of those and _only_ have `searchMode` in the way you've written here.  This would allow us to avoid the weird stuff we have to do for reverse compatibility.\r\n\r\nI guess, if you agree with that, then we should save your commits for refactoring by opening another reverse-incompatible \"3.0.0 PR\" that will be merged in when we decide it is time for a release there."}],"action":{"name":"View Pull Request","url":"https://github.com/mlpack/mlpack/pull/762/files/f8ddd58ece06362024944a6533f68074a6b27ef7#r75572810"}}}</script>