ViewType::value_type
должно быть похоже на то, что вы ожидали ViewType::pixel_t
.
Затем, для однородных типов пикселей, channel_type<T>::type
из HomogenePixelBasedConcept должен привести к типу, который вы ищете:
template<class ViewType>
void PixelFoo(ViewType v)
{
typedef typename boost::gil::channel_type<typename ViewType::value_type>::type pod_t;
pod_t maxVal = channel_traits<pod_t>::max_value();
pod_t podVal = v(0, 0); //expect error with emptyView
}