http://en.cppreference.com/w/cpp/types/is_reference
http://en.cppreference.com/w/cpp/types/is_const
http://en.cppreference.com/w/cpp/language/static_assert
codice:
template<typename T>
struct foo
{
    static_assert(!std::is_reference(T)::value || std::is_const(T)::value, "T needs to be a non-const reference);
    using func_t = std::function<void(T&)>;

    static void setFunc(const func_t&) {}
    static func_t func() {}
};