@adriaanm I found a workaround for my issue.
Library code
package MyLib
trait Post
@scala.annotation.implicitAmbiguous("This definition may be called only post-construction")
implicit object GeneralPost extends Post
class Foo {
implicit object ForceAmbiguity extends Post
private lazy val _postConstruction = {
//Something to be used once at Post-Construction
0
}
def postConstruction(implicit post : Post) : Int = _postConstruction
}
User code
new Foo {}.postConstruction //compiles
new Foo {postConstruction} //Error: This definition may be called only post-construction
So all public members that must be called post-construction must have a Post
implicit (so the implicit also helps to document the constraint for the member).
What do you think?