Oftentimes I see in the derivation of an algorithm or in a mathematical proof the phrase that the function under consideration is assumed to be defined on the unit hypercube $[0, 1]^n$, which is claimed to be imposing practically no loss of generality. I am curious to know what are the actual assumptions we are making here about the function. Should the function, for instance, be continuous on its domain? Or may be the domain should have no holes? I would be grateful if somebody could summarize the assumptions one needs in this context and show that, indeed, the problem can be reduced to $[0, 1]^n$.