Summary

The IndicatorGenerator concept is introduced to be able to work with indicators that do not have a default constructor, or for which the default constructor needs to be bypassed. It is an object can be used to spawn initialized indicators. Objects of IndicatorGenerator models are passed as function arguments by value and therefore are required to be trivially copyable.

Refinement of

CopyAssignable, Destructible

Associated types

A model of IndicatorGenerator produces models of Indicator. Therefore each is associated with an Indicator model

Notation

indicator_generator_type is a model of IndicatorGenerator. indicator_generator and other are objects of the type indicator_generator_type. indicator_type is the associated Indicator model.

Definitions

Valid expressions

indicator_type i = indicator_generator();
indicator_generator_type ig = indicator_generator;
other = indicator_generator;

Expression Semantics

Expression Semantic
indicator_type i = indicator_generator();|generate an initialized indicator  
indicator_generator_type ig = indicator_generator; copy-construct the generator. This must be a small cost operation.
other = indicator_generator; copy-assign the generator. This must be a small-cost operation.

Complexity guarantees

n.a.

Invariants

The following two procedures must be equivalent:

// First procedure
 auto a = indicator_generator();
 auto b = indicator_generator();
 // Second procedure
 auto a = indicator_generator();
 auto b = a; // provided that the indicator_type is copy-constructible.

Models

Each Indicator in Pronto Raster has an associated IndicatorGenerator

Notes

When the associated Indicator model has a default constructor that should be used, the IndicatorGenerator can be implemented as simple as:

struct some_indicator_generator
{
	some_indicator_type operator()() const
	{
		return some_indicator_type{};
	}
};

See also

Indicator