C++ のこつをつかみ始めたと思った....
それから、非常に単純なテンプレート関数だと思っていたものを書きましたが、突然何も意味がないように思えました。コンパイラは、私がテンプレート化された関数を定義したという事実さえ気に入らないようです。これは少しおかしいようです。これはコンパイルの単一ユニットであるため、何について不平を言っているのかわかりません。
#include <vector>
#include <iostream>
typedef std::vector<int> int_vec_type;
template <typename Type>
bool print_vec(Type::const_iterator itr, const Type::const_iterator end)
{
for (; itr != end; ++itr) {
std::cout << *itr << std::endl;
}
return true;
}
int
main()
{
int_vec_type ivec;
ivec.push_back(0);
ivec.push_back(1);
ivec.push_back(2);
print_vec(ivec.begin(), ivec.end());
return 0;
}
これらはコンパイルエラーです:
tia.cc:7:22: エラー: 'bool print_vec' のテンプレート宣言</p>
tia.cc:7:37: エラー: 'itr' の前に ')' が必要です</p>
tia.cc:7:42: エラー: 'const' の前にプライマリ式が必要です</p>
tia.cc: 関数 'int main()' 内:
tia.cc:25:39: エラー: 'print_vec' はこのスコープで宣言されていません
前もって感謝します。