this is a VERY simplified version of the question to make it obvious what i am asking. I cannot seem to find it on Stack Overflow but i am probably searching using the wrong words!
Here is a Template Class with the obvious parts removed.
template <class T, bool clip = true>
class BOUNDED_VAL { 
    public:     
        BOUNDED_VAL(T initialMin, T intialMax) :locked(false) {     
            assert_or_throw(intialMax >= initialMin, HD_ERR_MINMAX_REVERSED);
            min = initialMin;
            max = intialMax;
            value = initialMin;
        };etc.
// assert_or_throw is a typedef which asserts during debug builds to prevent programmer mistakes (especially my own) or throws a rich catachable runtime error for user input just in case something gets around user input limit checking during release builds (A hard wall). Belt and braces approach...
Now i know i can set this up as an initialised private class member variable like so:
private:
    BOUNDED_VAL<int> testBoundInt = BOUNDED_VAL<int>(0, 10);
BUT
- Does this create a new BOUNDED_VAL and then copy it over the member variable (or compiler smooshes this away during optimisation)? 
- Is there a more succinct way of doing it which i am just not finding? I know the following do not work but for example: 
private:
    BOUNDED_VAL<int> testBoundInt(0,10);
or
private:
    BOUNDED_VAL<int>(0,10) testBoundInt;
I am self taught in C++ so it might be an obvious question...but you never know...
Many Thanks
 
    