#include "boost/static_assert.hpp"
template <class T, T, T> struct is_eq
{
static const bool value = false;
};
template <class T, T t> struct is_eq<T, t, t>
{
static const bool value = true;
};
void fack(void);
template <void(&F)(void) = fack> struct hoge
{
void fuga(void)
{
BOOST_STATIC_ASSERT((!is_eq<void(&)(void), F, fack>::value));
}
};
void good(void);
int main(void)
{
hoge<good> hg;
hoge<fack> hf;
// hg.fuga();
hf.fuga();
return 0;
}