title: std::make_shared gives error i dont understand
body: <p>i have map that looks like this:</p>
  
  <pre><code>typedef std::map&lt;PuzzlePartLocation, std::shared_ptr&lt;PuzzleObj&gt;&gt; ComponentsMap;
  </code></pre>
  
  <p>now i try to set this map with elements via fucntion like this:</p>
  
  <pre><code>void ComponentMadiator::Register(const PuzzlePartLocation puzzlePartLocation,PuzzleObj* puzzleObj)
  {
     componentsMap[puzzlePartLocation] = std::make_shared&lt;PuzzleObj&gt;(puzzleObj);
  }
  </code></pre>
  
  <p>i just call it like this :</p>
  
  <pre><code> PuzzleObj* pPuzzleObjStickLeft = new PuzzleObj()
  pComponentMadiator-&gt;Register(1,pPuzzleObjStickLeft );
  </code></pre>
  
  <p>PuzzleObj contains memeber from type IImageComponent *<br>
  PuzzleObj inherits from base class</p>
  
  <p>but it give me error like this :</p>
  
  <pre><code>1&gt;c:\program files\microsoft visual studio 11.0\vc\include\memory(873): error C2664: 'PuzzleObj::PuzzleObj(IImageComponent *)' : cannot convert parameter 1 from 'PuzzleObj *' to 'IImageComponent *'
  1&gt;          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
  1&gt;          c:\program files\microsoft visual studio 11.0\vc\include\memory(972) : see reference to function template instantiation 'std::_Ref_count_obj&lt;_Ty&gt;::_Ref_count_obj&lt;PuzzleObj*&amp;&gt;(_V0_t)' being compiled
  1&gt;          with
  1&gt;          [
  1&gt;              _Ty=PuzzleObj,
  1&gt;              _V0_t=PuzzleObj *&amp;
  1&gt;          ]
  1&gt;          c:\program files\microsoft visual studio 11.0\vc\include\memory(972) : see reference to function template instantiation 'std::_Ref_count_obj&lt;_Ty&gt;::_Ref_count_obj&lt;PuzzleObj*&amp;&gt;(_V0_t)' being compiled
  1&gt;          with
  1&gt;          [
  1&gt;              _Ty=PuzzleObj,
  1&gt;              _V0_t=PuzzleObj *&amp;
  1&gt;          ]
  1&gt;          d:\dev\cpp\cocos2d-x\cocos2d-x-3.0beta2\cocos2d-x-3.0beta2\projects\neonbreaker\classes\componentmadiator.cpp(23) : see reference to function template instantiation 'std::shared_ptr&lt;_Ty&gt; std::make_shared&lt;PuzzleObj,PuzzleObj*&amp;&gt;(_V0_t)' being compiled
  1&gt;          with
  1&gt;          [
  1&gt;              _Ty=PuzzleObj,
  1&gt;              _V0_t=PuzzleObj *&amp;
  1&gt;          ]
  </code></pre>