VS2017&/std:c++17でboost::bimapがコンパイルエラー

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
8127
記事: 4
登録日時: 1年前

VS2017&/std:c++17でboost::bimapがコンパイルエラー

#1

投稿記事 by 8127 » 1週間前

こんにちは。
c++17を使いたいので、コンパイルオプションの/std:c++17 をつけてコンパイルすると
boost::bimapでコンパイルエラーになってしまいます。
MSVC2017の最新更新版、boost Version 1.66.0を使っています。

お聞きしたいのですが、/std:c++17を使うためにはboostのビルド時や使い方に特別な操作が必要なのでしょうか?詳しい方ご教授お願いします・・・
※「リンクエラー」ではなく「コンパイルエラー」なのでパスの設定等は合っていると思われます

//このコードでエラーが起きます
// /std:c++17 を消したり #include <boost/bimap.hpp> を消すと普通にコンパイルできます
#include <iostream>
#include <boost/bimap.hpp>

int main(int argc, char *argv[]) {
return EXIT_SUCCESS;
}


1>c:\boost\boost_1_66_0\boost\bimap\relation\support\data_extractor.hpp(43): error C2143: 構文エラー: ',' が '<' の前にありません。
1>c:\boost\boost_1_66_0\boost\bimap\relation\support\data_extractor.hpp(56): note: コンパイル対象の クラス テンプレート インスタンス化 'boost::bimaps::relation::support::data_extractor_implementation<boost::bimaps::relation::member_at::left,Relation>' のリファレンスを確認してください
1>c:\boost\boost_1_66_0\boost\bimap\relation\support\data_extractor.hpp(43): error C2518: 基底クラス リストにあるキーワード 'typename' は無効です。無視されます。
1>c:\boost\boost_1_66_0\boost\bimap\relation\support\data_extractor.hpp(60): error C2143: 構文エラー: ',' が '<' の前にありません。
1>c:\boost\boost_1_66_0\boost\bimap\relation\support\data_extractor.hpp(73): note: コンパイル対象の クラス テンプレート インスタンス化 'boost::bimaps::relation::support::data_extractor_implementation<boost::bimaps::relation::member_at::right,Relation>' のリファレンスを確認してください


(続く)

アバター
8127
記事: 4
登録日時: 1年前

Re: VS2017&/std:c++17でboost::bimapがコンパイルエラー

#2

投稿記事 by 8127 » 1週間前

ごめんなさいcodeをタグで囲むの忘れました次から気をつけます

アバター
8127
記事: 4
登録日時: 1年前

Re: VS2017&/std:c++17でboost::bimapがコンパイルエラー

#3

投稿記事 by 8127 » 1週間前

更に調べたところboostのバグレポに投げられて8か月放置されてるみたいです・・・
ttps://svn.boost.org/trac10/ticket/13306

もし何か知恵のある方がいらっしゃいましたらご教授ください。
ダメそうならboost切り離して自分で実装します・・・(boost_serializationくらいしか使ってないので)

アバター
a5ua
記事: 196
登録日時: 7年前

Re: VS2017&/std:c++17でboost::bimapがコンパイルエラー

#4

投稿記事 by a5ua » 1週間前

1>c:\boost\boost_1_66_0\boost\bimap\relation\support\data_extractor.hpp(43): error C2143: 構文エラー: ',' が '<' の前にありません。
1>c:\boost\boost_1_66_0\boost\bimap\relation\support\data_extractor.hpp(56): note: コンパイル対象の クラス テンプレート インスタンス化 'boost::bimaps::relation::support::data_extractor_implementation<boost::bimaps::relation::member_at::left,Relation>' のリファレンスを確認してください
1>c:\boost\boost_1_66_0\boost\bimap\relation\support\data_extractor.hpp(43): error C2518: 基底クラス リストにあるキーワード 'typename' は無効です。無視されます。
1>c:\boost\boost_1_66_0\boost\bimap\relation\support\data_extractor.hpp(60): error C2143: 構文エラー: ',' が '<' の前にありません。
1>c:\boost\boost_1_66_0\boost\bimap\relation\support\data_extractor.hpp(73): note: コンパイル対象の クラス テンプレート インスタンス化 'boost::bimaps::relation::support::data_extractor_implementation<boost::bimaps::relation::member_at::right,Relation>' のリファレンスを確認してください


(続く)
確かに、上記エラーは
https://svn.boost.org/trac10/ticket/13306
で示されている通り、std::unary_functionが原因のようです。

しかしながら、Boost Version 1.66.0ではstd::unary_functionを使わないコードに修正されているようです。
https://www.boost.org/doc/libs/1_66_0/b ... ractor.hpp

8127さんの使用しているBoostのコードは本当に1.66.0のものでしょうか?

アバター
8127
記事: 4
登録日時: 1年前

Re: VS2017&/std:c++17でboost::bimapがコンパイルエラー

#5

投稿記事 by 8127 » 1週間前

a5ua様、

インクルードしているソースを開いたところ、確かにstd::unary_functionに依存していて、
1.66.0のドキュメントとは異なっていました。
しかしインストールフォルダもboost_1_66_0になっていますし付属のindex.htmlを開いても
中にRelease 1.66.0と書いてあります・・・謎です

ですが、今の最新版は1.67.0のようなので、重い腰をあげてDL、ビルドしようと思います。
a5ua様、今回はありがとうございました。もし何かつまづいた場合のみまた連絡させていただきます。

返信

“C言語何でも質問掲示板” へ戻る