lines 8-91 of file: include/cppad/utility/check_simple_vector.hpp

{xrst_begin CheckSimpleVector}
{xrst_spell
   preforms
}

Check Simple Vector Concept
###########################

Syntax
******

   # ``include <cppad/utility/check_simple_vector.hpp>``

``CheckSimpleVector`` < *Scalar* , *Vector* >()

``CheckSimpleVector`` < *Scalar* , *Vector* >( *x* , *y* )

Purpose
*******
Preforms compile and run time checks that the type specified
by *Vector* satisfies all the requirements for
a :ref:`SimpleVector-name` class with
:ref:`elements of type<SimpleVector@Elements of Specified Type>`
*Scalar* .
If a requirement is not satisfied,
a an error message makes it clear what condition is not satisfied.

x, y
****
If the arguments *x* and *y* are present,
they have prototype

| |tab| ``const`` *Scalar* & *x*
| |tab| ``const`` *Scalar* & *y*

In addition, the check

   *x* == *x*

will return the boolean value ``true`` , and

   *x* == *y*

will return ``false`` .

Restrictions
************
If the arguments *x* and *y* are not present,
the following extra assumption is made by ``CheckSimpleVector`` :
If *x* is a *Scalar* object

| |tab| *x*  = 0
| |tab| *y*  = 1

assigns values to the objects *x* and *y* .
In addition,
*x* == *x* would return the boolean value ``true`` and
*x* == *y* would return ``false`` .

Include
*******
The file ``cppad/utility/check_simple_vector.hpp``
is included by ``cppad/cppad.hpp``
but it can also be included separately with out the rest
if the CppAD include files.

Parallel Mode
*************
The routine :ref:`thread_alloc::parallel_setup<ta_parallel_setup-name>`
must be called before it
can be used in :ref:`parallel<ta_in_parallel-name>` mode.

Example
*******
{xrst_toc_hidden
   example/utility/check_simple_vector.cpp
}
The file :ref:`check_simple_vector.cpp-name`
contains an example and test of this function where *S*
is the same as *T* .
The comments in this example suggest a way to change the example
so *S* is not the same as *T* .

{xrst_end CheckSimpleVector}
