Ubuntu 16.04 LTSでg++をC++17対応に
この記事は最終更新日から1年以上が経過しています。
芽萌丸プログラミング部@programming
投稿日 2021/2/4
更新日 2021/2/4 ✏

Ubuntu 16.04 LTSでg++をC++17対応に

Ubuntu 16.04 LTS (Xenial) で C++17 を使うためのメモです。

Ubuntu 16.04 LTS (Xenial) で C++17 を利用するためには g++ コンパイラをg++-7に切り替える必要があります。

目次:

前提

  • Ubuntu 16.04 LTS

g++-7のインストール

## インストール前に既存のg++のバージョンチェック:
$ g++ --version
g++ (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609
...

## C++17対応のg++-7をインストール:
$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test
$ sudo apt update
$ sudo apt install -y g++-7

## g++のシンボリックリンクを張り直す:
$ sudo ln -sf g++-7 /usr/bin/g++

## インストール後のバージョンチェック:
$ g++ --version
g++ (Ubuntu 7.5.0-3ubuntu1~16.04) 7.5.0
...

テスト

C++17から実装されたstd::anyが使えるかテストしてみます:

cpp17-test.cpp

#include <any>
#include <iostream>
int main(){
    auto s = std::any(123);
    std::cout << std::any_cast<int>(s) << std::endl; // "123"が標準出力
}

コンパイル&実行:

## -std=c++17を付けてコンパイル:
$ g++ -o a.out cpp17-test.cpp -std=c++17 
## テスト実行:
$ ./a.out
123 ## <== 成功!

参考


芽萌丸プログラミング部
芽萌丸プログラミング部@programming
プログラミング関連アカウント。Web標準技術を中心に書いていきます。フロントエンドからサーバサイドまで JavaScript だけで済ませたい人たちの集いです。記事は主に @TanakaSoftwareLab が担当。