Hi. It seems that you wanted your "build" function of "variant.hh" to be named idiomatically, and so created new "emplace" function. Well, okey, but if you really want to be idiomatic, please, make it support multiple arguments. I. e. it should look so:
template <typename T, typename... U> T& emplace (U&&... u) { return *new (yyas_<T> ()) T (std::forward <U>(u), ...); } Of course, this will cover empty argument list case, too, so, if this definition is enabled, then you don't need "emplace ()". == Askar Safin http://vk.com/safinaskar