typename BinaryReturn<PVector<T2,N,C>, PVector<T3,N,C>, FnWhere>::Type_t  d;
typename TrinaryReturn<PScalar<T1>, PVector<T2,N,C>, PVector<T3,N,C>, FnWhere>::Type_t  d;
where(const PScalar<T1>& a, const PVector<T2,N,C>& b, const PVector<T3,N,C>& c){  typename BinaryReturn<PVector<T2,N,C>, PVector<T3,N,C>, FnWhere>::Type_t  d;  // Not optimal - want to have where outside assignment  for(int i=0; i < N; ++i)    d.elem(i) = where(a.elem(), b.elem(i), c.elem(i));  return d;}