この1行をclang+libc ++(C ++ 11モード)でコンパイルしようとすると:
#include <boost/thread.hpp>
clangは次のエラーを出します:
test.cpp:1からインクルードされたファイル: /Users/yongwei/Programming/boost_1_52_0/boost/thread.hpp:13からインクルードされたファイル: /Users/yongwei/Programming/boost_1_52_0/boost/thread/thread.hpp:17からインクルードされたファイル: /Users/yongwei/Programming/boost_1_52_0/boost/thread/pthread/thread_data.hpp:11からインクルードされたファイル: /Users/yongwei/Programming/boost_1_52_0/boost/thread/locks.hpp:18からインクルードされたファイル: /Users/yongwei/Programming/boost_1_52_0/boost/chrono/time_point.hpp:33からインクルードされたファイル: /Users/yongwei/Programming/boost_1_52_0/boost/chrono/duration.hpp:353:49:エラー: constexpr関数が定数式を生成することはありません static BOOST_CHRONO_LIB_CONSTEXPR float lower()..。 ^ /Users/yongwei/Programming/boost_1_52_0/boost/chrono/duration.hpp:355:21:注: 非constexpr関数'max'は定数式では使用できません return-(std :: neuro_limits :: max)(); ^ /usr/bin/../lib/c++/v1/limits:443:43:注:ここで宣言されています _LIBCPP_INLINE_VISIBILITY static type max()_NOEXCEPT{return..。 ^ test.cpp:1からインクルードされたファイル: /Users/yongwei/Programming/boost_1_52_0/boost/thread.hpp:13からインクルードされたファイル: /Users/yongwei/Programming/boost_1_52_0/boost/thread/thread.hpp:17からインクルードされたファイル: /Users/yongwei/Programming/boost_1_52_0/boost/thread/pthread/thread_data.hpp:11からインクルードされたファイル: /Users/yongwei/Programming/boost_1_52_0/boost/thread/locks.hpp:18からインクルードされたファイル: /Users/yongwei/Programming/boost_1_52_0/boost/chrono/time_point.hpp:33からインクルードされたファイル: /Users/yongwei/Programming/boost_1_52_0/boost/chrono/duration.hpp:361:50:エラー: constexpr関数が定数式を生成することはありません static BOOST_CHRONO_LIB_CONSTEXPR double lower()..。 ^ /Users/yongwei/Programming/boost_1_52_0/boost/chrono/duration.hpp:363:21:注: 非constexpr関数'max'は定数式では使用できません return-(std :: neuro_limits :: max)(); ^ /usr/bin/../lib/c++/v1/limits:443:43:注:ここで宣言されています _LIBCPP_INLINE_VISIBILITY static type max()_NOEXCEPT{return..。 ^ test.cpp:1からインクルードされたファイル: /Users/yongwei/Programming/boost_1_52_0/boost/thread.hpp:13からインクルードされたファイル: /Users/yongwei/Programming/boost_1_52_0/boost/thread/thread.hpp:17からインクルードされたファイル: /Users/yongwei/Programming/boost_1_52_0/boost/thread/pthread/thread_data.hpp:11からインクルードされたファイル: /Users/yongwei/Programming/boost_1_52_0/boost/thread/locks.hpp:18からインクルードされたファイル: /Users/yongwei/Programming/boost_1_52_0/boost/chrono/time_point.hpp:33からインクルードされたファイル: /Users/yongwei/Programming/boost_1_52_0/boost/chrono/duration.hpp:369:55:エラー: constexpr関数が定数式を生成することはありません static BOOST_CHRONO_LIB_CONSTEXPR long double lower()..。 ^ /Users/yongwei/Programming/boost_1_52_0/boost/chrono/duration.hpp:371:21:注: 非constexpr関数'max'は定数式では使用できません return-(std :: neuro_limits :: max)(); ^ /usr/bin/../lib/c++/v1/limits:443:43:注:ここで宣言されています _LIBCPP_INLINE_VISIBILITY static type max()_NOEXCEPT{return..。 ^ 3つのエラーが生成されました。
C ++ 11ではこれらの関数がである必要があるため、これはlibc++のバグのように見えますconstexpr
。
誰もが同じ問題に遭遇しました、そしてあなたは同意できますか?修正について知っていますか?
私のclangバージョンは次のとおりです。
Apple clangバージョン4.1(tags / Apple / clang-421.11.66)(LLVM 3.1svnに基づく) ターゲット:x86_64-apple-darwin11.4.2 スレッドモデル:posix