trueroad/HaranoAjiFonts-generator

cmapfile.cc がコンパイルエラーになる

Closed this issue · 6 comments

make するとで以下のようなコンパイルエラーがでます。
g++ のバージョンは 7.4.0 です。

g++  -std=c++11 -MMD -MP -MF cmapfile.d -MT cmapfile.o  -c -o cmapfile.o cmapfile.cc
cmapfile.cc: In constructor ‘cmapfile::cmapfile()’:
cmapfile.cc:66:4: error: no matching function for call to ‘regex_dispatcher::member_table<cmapfile>::member_table(<brace-enclosed initializer list>)’
   })
    ^
In file included from cmapfile.hh:43:0,
                 from cmapfile.cc:36:
regex_dispatcher_m.hh:54:5: note: candidate: regex_dispatcher::member_table<Derived>::member_table(regex_dispatcher::member_table<Derived>::table_type) [with Derived = cmapfile; regex_dispatcher::member_table<Derived>::table_type = std::vector<std::pair<std::__cxx11::basic_regex<char>, bool (cmapfile::*)(const std::__cxx11::match_results<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > >&)>, std::allocator<std::pair<std::__cxx11::basic_regex<char>, bool (cmapfile::*)(const std::__cxx11::match_results<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > >&)> > >]
     member_table (table_type t):
     ^~~~~~~~~~~~
regex_dispatcher_m.hh:54:5: note:   no known conversion for argument 1 from ‘<brace-enclosed initializer list>’ to ‘regex_dispatcher::member_table<cmapfile>::table_type {aka std::vector<std::pair<std::__cxx11::basic_regex<char>, bool (cmapfile::*)(const std::__cxx11::match_results<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > >&)>, std::allocator<std::pair<std::__cxx11::basic_regex<char>, bool (cmapfile::*)(const std::__cxx11::match_results<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > >&)> > >}’
regex_dispatcher_m.hh:47:9: note: candidate: regex_dispatcher::member_table<cmapfile>::member_table(const regex_dispatcher::member_table<cmapfile>&)
   class member_table
         ^~~~~~~~~~~~
regex_dispatcher_m.hh:47:9: note:   no known conversion for argument 1 from ‘<brace-enclosed initializer list>’ to ‘const regex_dispatcher::member_table<cmapfile>&’
regex_dispatcher_m.hh:47:9: note: candidate: regex_dispatcher::member_table<cmapfile>::member_table(regex_dispatcher::member_table<cmapfile>&&)
regex_dispatcher_m.hh:47:9: note:   no known conversion for argument 1 from ‘<brace-enclosed initializer list>’ to ‘regex_dispatcher::member_table<cmapfile>&&’

レポートありがとうございます。
私の手元の環境 (Cygwin 64 bit) も g++ 7.4.0 なのですが、
特にエラーは発生せず再現できない状況です。

どのような環境でお使いでしょうか。

ありがとうございます。
環境は WSL 上の Ubuntu 18.04.4 LTS です。

Cygwin 試してみます。

本件とは関係ないかもしれませんが clang++ ではコンパイルできなかったため、修正したものを
332c8f0
に push しました。

Ubuntu 18.04.4 LTS の g++ 7.4.0 でコンパイルできるか試してみていただけますでしょうか。

ありがとうございます。
experiment-fix-clang++ ブランチで Ubuntu 18.04.4 LTS の g++ 7.4.0 でコンパイルできました。

ご確認いただきありがとうございます。
また、Cygwin 64 bit の g++ 7.4.0 および clang++ 8.0.1 で、以前と同じ出力が得られることを確認しましたので、 master ブランチへマージしました。