10年以上まえに つくった ふるい自作ライブラリと格闘中。
C++でのプログラミング中に あたらしい関数をかき、動作テストが完了しました。なにかと つかいまわせそうな関数なので、ライブラリに追加しましょう。まずは、つくった関数をいまのコードからライブラリ集のコードにコピーして、ライブラリ化するときの無駄が発生しないように ちょいちょいと加工。ライブラリを再構築するためのmakeファイルが用意してあるので、makeを実行するだけ。と おもったら、既存のライブラリ関数の再コンパイルが発生しました。おそらくヘッダ ファイルが更新されたためでしょう。ところが、コンパイル エラーが でてライブラリの構築が とまってしまいます。
accept関数の func( parstr, s) で なぜかテンプレート版が選択されてコンパイル エラーに なります。テンプレート版のfuncと非テンプレート版のfuncでは ひき数の かずが あきらかに ちがうので区別されるはずです。コンパイラの問題のような気が しますが、なんとか回避しなければ。
※ この記事の本文からは漢字の訓を排除しています。
C++でのプログラミング中に あたらしい関数をかき、動作テストが完了しました。なにかと つかいまわせそうな関数なので、ライブラリに追加しましょう。まずは、つくった関数をいまのコードからライブラリ集のコードにコピーして、ライブラリ化するときの無駄が発生しないように ちょいちょいと加工。ライブラリを再構築するためのmakeファイルが用意してあるので、makeを実行するだけ。と おもったら、既存のライブラリ関数の再コンパイルが発生しました。おそらくヘッダ ファイルが更新されたためでしょう。ところが、コンパイル エラーが でてライブラリの構築が とまってしまいます。
// Library header file istream &func( istream &istr, string &str); template< class InIter, class OutIter> InIter func( InIter from, InIter end, OutIter &to); template< class InIter, class OutIter> InIter func( InIter from, iterator_traits< InIter>::value_type endv, OutIter &to); template< class InIter, class OutIter> InIter func( InIter from, InIter end, OutIter &to, char ch); template< class InIter, class OutIter> InIter func( InIter from, iterator_traits< InIter>::value_type endv, OutIter &to, char ch); // Where the library is used in the body file: void accept( istream &stream) { string s; ... func( parstr, s); ... }
accept関数の func( parstr, s) で なぜかテンプレート版が選択されてコンパイル エラーに なります。テンプレート版のfuncと非テンプレート版のfuncでは ひき数の かずが あきらかに ちがうので区別されるはずです。コンパイラの問題のような気が しますが、なんとか回避しなければ。
※ この記事の本文からは漢字の訓を排除しています。