最近、boost::mpl を試してみましたが、素晴らしくも恐ろしいものでもあります。コンパイル エラー情報がかなり紛らわしい場合があります。
今回は、次のコードで問題が発生しました。
#include <iostream>
#include <boost/type_traits/is_same.hpp>
#include <boost/mpl/integral_c_tag.hpp>
#include <boost/mpl/tag.hpp>
#include <typeinfo>
#include <boost/mpl/for_each.hpp>
#include <boost/mpl/range_c.hpp>
#include <boost/mpl/vector.hpp>
#include <boost/mpl/copy.hpp>
//メタ関数 tag<> を使用して型を取得し、mpl が整数のみを出力するようにします。
struct mpl_func2
{
template<typename T>
void operator()(T t)
{
if(boost::is_same<boost::mpl::tag<T>::type, boost::mpl::integral_c_tag>::value)
{cout<<t<<',';}
}
};
エラーメッセージは次のとおりです。
エラー: 'template struct boost::is_same' のテンプレート パラメーター リストの引数 1 で型/値が一致しません
エラー: タイプが必要ですが、'boost::mpl::tag::type' を取得しました