3

今日、C++ アプリケーションを再構築しましたが、コンパイルに失敗しました。しかし、何も変わっていません。最初のエラーは、ここで(プライベート継承)Listから継承する私のクラスにありました:std::vector

template<typename T> void List<T>::append(const T& value)
{
    push_back(value);
}

コンパイラによって宣言が見つからなかったため、std::vector<T>::前に追加する必要がありました。push_back(value);なぜそうなったのかはよくわかりませんが、g++ の更新があり、現在 Arch Linux で C++11 を使用して g++ v4.7.0 (プレリリース) を使用しています。

私はその問題を修正しましたが、実際の問題は、Boost ライブラリの問題のためにアプリケーションの残りの部分をコンパイルできないことですprogram_options。ライブラリには次のものを含めます。

#include <boost/config.hpp>
#include <boost/program_options/detail/config_file.hpp>
#include <boost/program_options/parsers.hpp>

エラー:

g++ -m64 -pipe -pedantic -Wextra -std=gnu++0x   -c -g -Wall -DDEBUG -DDEV -DMYSQL_SUPPORT -I. -IHeaders -MMD -MP -MF build/Debug/GNU-Linux-x86/Sources/Libs/Settings.o.d -o build/Debug/GNU-Linux-x86/Sources/Libs/Settings.o Sources/Libs/Settings.cpp
/usr/include/boost/program_options/detail/config_file.hpp: In instantiation of ‘bool boost::program_options::detail::basic_config_file_iterator<charT>::getline(std::string&) [with charT = char; std::string = std::basic_string<char>]’:
In file included from Sources/Libs/Settings.cpp:33:0:
Sources/Libs/Settings.cpp:69:24:   required from here
/usr/include/boost/program_options/detail/config_file.hpp:163:13: erreur: ‘to_internal’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
In file included from /usr/include/boost/program_options/detail/parsers.hpp:9:0,
                 from /usr/include/boost/program_options/parsers.hpp:265,
                 from Sources/Libs/Settings.cpp:34:
/usr/include/boost/program_options/detail/convert.hpp:75:34: note: ‘template<class T> std::vector<std::basic_string<char> > boost::program_options::to_internal(const std::vector<T>&)’ declared here, later in the translation unit

List クラスと同じエラー…</p>

ありがとうございました!

4

1 に答える 1

3

gcc 4.7 でのテンプレート インスタンス化の 2 フェーズ ルックアップ ルールの変更に悩まされていると思います。

ソース コードがなければ、これ以上実用的なアドバイスはできませんが、gcc4.7 の変更点(C++ の章) では、2 フェーズ ルックアップについて説明し、いくつかのコード修正を提案しています。

于 2012-04-05T11:18:25.277 に答える