Любой шанс использовать enable_if
с оператором преобразования типов? Кажется хитрым, так как и тип возврата и список параметров неявны.
dixit the documentation:
Похоже, нет способа указать enabler для оператора преобразования. Однако конструкторы преобразования могут иметь enablers в качестве дополнительных аргументов по умолчанию.
Хотя я могу понять теоретический интерес к этому вопросу, я лично воздерживаюсь от использования операторов преобразования в максимально возможной степени.
Единственное, что я когда-либо использовал с согласованностью, - это преобразование в псевдобулево (с использованием идиомы Safe Bool) для интеллектуальных указателей или прокси, и, как уже отмечалось, я использую трюк, чтобы фактически предотвратить полную логическую семантику .. .
Если я когда-либо захочу упростить преобразование, я предпочитаю что-нибудь вроде:
template <class T>
T to() const;
, которое не страдает от ограничений (в смысле сигнатуры) оператора преобразования и требует явного вызова только потому, что это немного яснее.