Рассмотрим код ниже:
struct number{
int numerator;
int denominator;
operator float() { return numerator*1.0 / denominator }
}
void main(){
number n;
n.numerator = 3;
n.denominator = 4;
float value = n; // here the user-defined conversion occurs
std::cout << value; // 0.75
}
В этом случае происходит пользовательское преобразование. Всякий раз, когда объект числа
присваивается значение с плавающей запятой, происходит преобразование и возвращается значение.
В вашем случае, когда объект класса Type назначен на структуру halide_type_t,
то есть
Type t1;
halide_type_t t = t1;
значение t1.type назначено для t.
Надеюсь, поможет! :)