Skip to content

C++20環境においてヘッダーファイルでエラーが発生する問題の修正#1222

Merged
n-ando merged 1 commit into
OpenRTM:masterfrom
Nobu19800:bugs/cdrstreamcopyconst
May 11, 2026
Merged

C++20環境においてヘッダーファイルでエラーが発生する問題の修正#1222
n-ando merged 1 commit into
OpenRTM:masterfrom
Nobu19800:bugs/cdrstreamcopyconst

Conversation

@Nobu19800

Copy link
Copy Markdown

Identify the Bug

Choreonoidはgccでのビルドにおいて、デフォルトの設定でC++20環境でコンパイルする。
Choreonoid-OpenRTMプラグインのビルドにおいてもC++20が設定されるが、OpenRTM-aistのCORBA_CdrMemoryStream.hでエラーが発生する。

Description of the Change

CORBA_CdrSerializerのコピーコンストラクタを修正してC++11、C++20でエラーが出ないことを確認した。

Verification

  • Did you succeed the build?
  • No warnings for the build?
  • Have you passed the unit tests?

@Nobu19800 Nobu19800 requested review from n-ando and n-kawauchi May 1, 2026 12:44
@Nobu19800 Nobu19800 self-assigned this May 1, 2026
@Nobu19800 Nobu19800 added bug Something isn't working enhancement New feature or request labels May 1, 2026

@n-kawauchi n-kawauchi left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

この修正で、choreonoid-openrtmのビルド時にエラーは発生しないことを確認できました。確認手順は以下の通り。

https://openrtm.org/openrtm/ja/doc/developersguide/advanced_rt_system_programming/choreonoid_openrtm_plugin#toc12

  • PPAリポジトリを利用してChoreonoidをaptでインストール
  • CORBAプラグインのビルドとインストール
  • choreonoidの依存パッケージをインストールする
    https://choreonoid.org/ja/documents/latest/install/build-ubuntu.html#build-ubuntu-install-packages
    • ビルド環境がUbuntu24.04なので、下記スクリプトを実行
      choreonoid-2.3.0/misc/script/install-requisites-ubuntu-24.04.sh
  • OpenRTMをソースからインストール
    • (1) 修正前動作確認として最新masterソースを使用する手順の抜粋
      • インストール先:~/work/master-openrtm_install
      $ mkdir -p ~/work/master-openrtm_install
      $ export OPENRTM_INSTALL_PATH=~/work/master-openrtm_install
      $ git clone https://github.com/OpenRTM/OpenRTM-aist
      $ cd OpenRTM-aist/build
      $ cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$OPENRTM_INSTALL_PATH
      $ cmake --build . --config Release
      $ sudo cmake --build . --config Release --target install
      
    • (2) 本PRソースを使用する手順の抜粋
      • インストール先:~/work/PR1222-openrtm_install
      $ mkdir -p ~/work/PR1222-openrtm_install
      $ export OPENRTM_INSTALL_PATH=~/work/PR1222-openrtm_install
      $ git clone https://github.com/OpenRTM/OpenRTM-aist
      $ cd OpenRTM-aist/
      $ git fetch origin pull/1222/head:bugs/cdrstreamcopyconst
      $ git merge bugs/cdrstreamcopyconst
      $ cd build/
      $ cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$OPENRTM_INSTALL_PATH
      $ cmake --build . --config Release
      $ sudo cmake --build . --config Release --target install
      
  • OpenRTMプラグインのビルド(choreonoid-openrtm)
    • (1) OpenRTM-aist修正前の最新masterソース使用でエラーになることの確認
      $ export OPENRTM_INSTALL_PATH=~/work/master-openrtm_install
      $ git clone https://github.com/OpenRTM/choreonoid-openrtm
      $ cd choreonoid-openrtm/build
      $ cmake .. -DOpenRTM_DIR=$OPENRTM_INSTALL_PATH/lib/cmake/openrtm-2.1/
      $ cmake --build . --config Release
        :
      [ 10%] Building CXX object src/BodyIoRTC/CMakeFiles/CnoidBodyIoRTC.dir/BodyIoRTC.cpp.o
        :
      /home/vagrant/work/master-openrtm_install/include/openrtm-2.1/rtm/CORBA_CdrMemoryStream.h:578:39: error: expected unqualified-id before ‘const’
        578 |         CORBA_CdrSerializer<DataType>(const CORBA_CdrSerializer<DataType> &rhs)
            |                                       ^~~~~
      /home/vagrant/work/master-openrtm_install/include/openrtm-2.1/rtm/CORBA_CdrMemoryStream.h:578:39: error: expected ‘)’ before ‘const’
        578 |         CORBA_CdrSerializer<DataType>(const CORBA_CdrSerializer<DataType> &rhs)
            |                                      ~^~~~~
            |                                       )
      
    • (2) 本PRソースを使用してエラーが発生しないことの確認
      $ export OPENRTM_INSTALL_PATH=~/work/PR1222-openrtm_install
      $ cd choreonoid-openrtm/build
      $ cmake .. -DOpenRTM_DIR=$OPENRTM_INSTALL_PATH/lib/cmake/openrtm-2.1/
      $ cmake --build . --config Release
      ビルドOK
      

@n-ando n-ando merged commit cde0ca5 into OpenRTM:master May 11, 2026
3 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants