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() {} };