Есть некая библиотека, для доступа к функционалу которой юзеру для своего типа нужно перегрузить заданную операцию, скажем операцию XOR со специальным библиотечным типом
struct UserType{...};
LibType1 operator ^ (UserType, LibType2){...}
Если юзер операцию не перегрузил, но пытается заюзать функционал библиотеки, код не собирается, это нормально. Проблема в том, что при этом вылетает сообщение на много букв - компайлер перечисляет какие перегруженные операции есть и почему они не подошли. Вопрос - как бы сделать так, что бы компайлер человеческим языком лаконично говорил - чудак, перегрузи операцию (заюзай макрос), или не трогай эту штуку вообще.
Че то я попробовал со static_assert-ом, но не вышло... руки кривые;-(
Второй вопрос (но он проще) - как в коде понять есть такая операция или нет ее, и в зависмости от этого выполнять какие то действия. Эта часть компилироваться должна уже в любом случае.
cast tailgunner