したがって、明確にするために、問題の根本は、「Apple」が何らかのヒントを提供されることなくSTD ::文字列であることをコンパイラが知らないことを想定するのが正しいですか？

最初の例の角度ブラケットのように、または2番目の入力パラメーターが2番目の例のマップ値と同じタイプネームを持っているように？
それは正解です。テンプレート引数控除は、コンパイラが渡された実際の引数のタイプに基づいて関数引数のタイプを推測できることに依存しています。定義は、渡された実際の引数とは異なる順序であります。テンプレート引数を明示的に指定するか、テンプレートパラメーターを再配置することにより、使用するタイプについてのコンパイラにヒントを提供し、テンプレート引数の控除を成功させることができます。