0
Visual C++ 2013でテンプレート関数のテンプレートを使用するのが無効です。 最初にテンプレート関数ポインタ(Tから文字列に変換するために使用されます) :なぜVisual C++でテンプレート関数のテンプレートが無効です
template<class T>
struct TemplateFn
{
typedef string(*T2STRING)(T);
};
そして私は
template<class T>
vector<string> Vector2StringVector(vector<T> a_vt, TemplateFn<T>::T2STRING a_fn)
{
auto vtString = vector<string>();
for (auto i = a_vt.begin(); i != a_vt.end(); i++)
{
vtString.push_back(a_fn(*i));
}
return vtString;
}
とコンパイラの出力がエラーになる別のテンプレート関数を定義した:C2061構文エラー:識別子「T2STRING」 最後に、私はすぐ下にコードを変更します
template<class T>
vector<string> Vector2StringVector(vector<T> a_vt, string(*T2STRING)(T))
{
auto vtString = vector<string>();
for (auto i = a_vt.begin(); i != a_vt.end(); i++)
{
vtString.push_back(T2STRING(*i));
}
return vtString;
}
これで大丈夫です。 それは私にとても結構です。 TemplateFn :: T2STRINGが好きなので、この方法を使用するエレガントな方法はありますか? ありがとう