I like it. Two points: 1) As you say in a comment, call-by-value is never safe, so we should actually flag it. But this can wait. 2) BuildMemberInitializer is, I think, used again in template instantiation. We should test whether these warnings happen twice in templates. Sebastian