#include <iostream>

template<bool T, class U = void>
struct enable__if
{};

template<class T>
struct enable__if<true,T>
{
	typedef T type;
};

template <typename T, typename U>
typename enable__if<std::is_same<typename U::value_type,T>::value,std::size_t>::type
non_empties(const U& r)
{
    return !r.empty();
}

template <typename T, typename U>
typename enable__if<!std::is_same<typename U::value_type,T>::value,std::size_t>::type
non_empties(const U& r)
{
    std::size_t res = 0;
    for(auto& it : r)
    {
        res += non_empties<T>(it);
    }
    return res;
}

int main()
{
    return 0;
}