#include <stdexcept>
#include <boost/lexical_cast.hpp>
+#include <boost/utility/value_init.hpp>
#include <common/tweener.h>
#include <common/except.h>
mutable bool evaluated_ = false;
impl()
- : value_()
+ : value_(boost::value_initialized<T>())
{
}
template<typename Expr>
impl(const Expr& expression)
- : expression_(expression)
+ : value_(boost::value_initialized<T>())
+ , expression_(expression)
{
}
void evaluate() const override
{
- if (expression_)
+ if (bound())
{
auto new_value = expression_();
void unbind()
{
- if (expression_)
+ if (bound())
{
expression_ = std::function<T ()>();
dependencies_.clear();