Comment déclarer les traits que la prise implicite “paramètres du constructeur”?

Je suis de la conception d'une hiérarchie de classe, qui se compose d'une classe de base ainsi que plusieurs traits. La classe de base fournit des implémentations par défaut de plusieurs méthodes, et les traits de remplacer de façon sélective certaines méthodes via abstract override, de sorte que les actes cumul des traits/mixin.

À partir d'une conception de ce qui fonctionne bien, et des cartes pour le domaine, de sorte que je peux ajouter une fonction de filtrage à partir d'ici (un trait) avec un prédicat à partir d'ici (un autre trait) etc.

Cependant, maintenant, j'aimerais que certains de mes traits de prendre paramètres implicites. Je suis heureux que cela a encore un sens à partir d'une conception de point de vue, et ne pas prêter à confusion dans la pratique. Cependant, je ne peux pas convaincre le compilateur pour courir avec lui.

Le cœur du problème semble être que je ne peut pas fournir des arguments du constructeur pour un trait de caractère, tels qu'ils pourraient être marqué implicite. Référencement le paramètre implicite dans une méthode de la mise en œuvre ne parvient pas à compiler avec l'attendu "impossible de trouver la valeur implicite" message; j'ai essayé de la "propagation" de l'implicite à partir de l'étape de construction (où, dans la pratique, il est toujours dans le champ d'application) d'être disponible à l'intérieur de la méthode via

implicit val e = implicitly[ClassName]

mais (comme sans doute beaucoup d'entre vous attendent) que définition a échoué avec le même message.

Il semble que le problème ici est que je ne peux pas convaincre le compilateur pour le tag de la signature du trait lui-même avec un implicit ClassName drapeau, et la force des appelants (c'est à dire ceux qui mélangent le trait dans un objet) pour fournir de l'implicite. Actuellement, mes appelants sont le faire, mais le compilateur n'est pas la vérification à ce niveau.


Est-il une manière de marquer d'un trait comme exigeant de certains implicites être disponibles au moment de la construction?

(Et si non, est-ce tout simplement pas encore mis en œuvre ou est-il une raison plus profonde pourquoi est-ce impossible?)