コードで and_ を使用しようとしていますが、戻り値の型に問題があります。true_type または false_type を受け入れて返す他のメタプログラミング コンストラクトで使用しようとしており、それらの型でも SFINAE オーバーロードを使用しています。boost::mpl::and_ と boost::mpl::or_ は、残りの多くの mpl とは異なる型を返します。少なくとも、私にはこのように見えます。
mpl_::failed************ boost::is_same<mpl_::bool_<true>, boost::integral_constant<bool, true> >::************)
では、次のように記述して assert を渡すにはどうすればよいでしょうか。
template <typename T, typename U>
void foo(const T& test, const U& test2)
{
typedef typename boost::mpl::and_<typename utilities::is_vector<T>, typename utilities::is_vector<U> >::type asdf;
BOOST_MPL_ASSERT(( boost::is_same<asdf, boost::true_type::value> ));
}
void fooer()
{
std::vector<int> test1;
std::vector<int> test2;
foo(test1, test2);
}