C++ メタプログラミング ライブラリ boost の mp11 モジュールは、一連の便利なメタプログラミング アルゴリズムと関数を提供します。このうち mp_is_list は型がリストかどうかを判定するメタ関数です。
mp_is_list 関数の定義は次のとおりです。
template <class T> struct mp_is_list;
リスト型かどうかに応じて、std::false_type または std::true_type を継承します。
以下は、mp_is_list 関数の使用をテストするプログラム コードです。
#include <iostream>
#include <type_traits>
#include <boost/mp11/list.hpp>
#include <boost/mp11/utility.hpp>
int main() {
using namespace std;
using namespace boost::mp11;
// test for list type
static_assert(mp_is_list<mp_list<int, char, double>>::value);
static_assert(mp_is_list<mp_list<int, char>>::value);
static_assert(mp_is_list<mp_list<>>::value);
// test for non-list type
static_assert(!mp_is_list<int>::value);
static_assert(!mp_is_list<char>::value);
static_assert(!mp_is_list<double>::value);