How does this template work?

rikki cattermole rikki at cattermole.co.nz
Sun Jun 16 15:14:37 UTC 2019


On 17/06/2019 3:11 AM, Robert M. Münch wrote:
> How does the observerObject Template and function work? I'm struggling 
> because both use the same name and how is the template parameter R 
> deduced/where is it coming from? Looks like it's somehow implicitly 
> deduced.
> 
> 
> class ObserverObject(R, E...){...}
> 
> template observerObject(E)
> {
>     ObserverObject!(R, E) observerObject(R)(R range)
>     {
>         return new ObserverObject!(R, E)(range);
>     }
> }
> 
> struct TestObserver {...}
> 
> auto observer = observerObject!int(TestObserver());

observerObject is an eponymous template.

What this means (in essence) is the symbol inside the template block == 
template block.

Yes R is being inferred by the argument.


More information about the Digitalmars-d-learn mailing list