Can the C++ compiler assume a 'const bool &' value will not change?
For example, imagine that I have a class:
class test {
public:
test(const bool &state)
: _test(state) {
}
void doSomething() {
if (_test) {
doMore();
}
}
void doMore();
private:
const bool &_test;
};
And I use it as follows:
void example() {
bool myState = true;
test myTest(myState);
while (someTest()) {
myTest.doSomething();
myState = anotherTest();
}
}
Is it allowed by the standard for the compiler to assume _test's value will not change.
I think not, but just want to be certain.
doSomething
– Frugivoroustemplate <typename T> const T* blow_leg_off(const T &t) { return &t; }
,test myTest(blow_leg_off(true));
. Just initializing a const reference member is fraught with peril, you could accidentally get an implicit conversion, so maybe use a pointer for the member too. – Biconvex