編集__has_include(C++17)概要__has_includeはインクルードするファイルが存在するかどうかを返す述語である。処理系によって異なるヘッダファイルをインクルードする場合、従来はコンパイラのみでヘッダファイルの有無を確認する方法がなく、下記例のように外部ツールにより補助する方法を取ることが多かった。#endifを記述C++17では標準的な方法でコンパイラがヘッダファイルの有無を確認できるため、ヘッダファイルの有無を確認するために外部ツールやコンフィグヘッダが不要となる。外部ツールの機能はヘッダファイルの有無を確認する以外にも、ライブラリのリンク可否、テストプログラムの実行結果取得など多くの機能を持つため、__has_includeにより外部ツールやコンフィグヘッダが完全に不要になるわけではない。詳細な文法は下記の通り。)誤解を恐れず言えば#includeの後に指定できるトークンと、同様のトークンが__has_includeにも指定できる。下に提供されています。