template //unconstrained type
//...
{
//in some complex procedural logic
T rebindable = .../*r-value*/;
//...
//some procedure dependent case:
T rebindable = .../*different r-value*/; //rebind (I am aware this does not work)
}
< /code>
Почему это вопрос, который стоит задать: < /p>
Многие процедурные алгоритмы поддерживают и постоянно работают по памяти через их область. будет преодолен путем использования итерации, например, реализации корневого искателя с интеллектуальной бисекцией по сравнению с потенциально невыизводимыми численными типами. < /p>
Однако некоторые более сложные процедурные алгоритмы не могут быть легко написаны функционально, особенно если повторение определяется по процедурному состоянию. Алгоритмы.Unique_ptr
template //still unconstrained (which is a plus)
//...
{
auto ptr = std::unique_ptr{.../*dangling reference (T*)*/};
//...
ptr = std::unique_ptr{.../*different dangling reference*/};
}
< /code>
Это решает проблему не ограничения типа, однако используемая память-это не память кучи. < /p>
Назначение: < /p>
template
requires std::assignable_from //type constraint!
//...
{
T assignable = .../*r-value*/;
//...
assignable = .../*different r-value*/;
}
< /code>
, в то время как он находится на куче, он поставляется по стоимости ограничения типа.template //type constraint!
//...
{
T assignable = .../*r-value*/;
//...
assignable.~T();
new (&assignable) T {.../*different r-value*/};
}
путем деконструкции и построения снова с назначением новое значение - отскок, однако это все еще имеет связанное ограничение типа.
Я пытаюсь повторно использовать память кучи для общих типов путем повторного переменного.[code]template //unconstrained type //... { //in some complex procedural logic T rebindable = .../*r-value*/;
//... //some procedure dependent case: T rebindable = .../*different r-value*/; //rebind (I am aware this does not work) } < /code> Почему это вопрос, который стоит задать: < /p> Многие процедурные алгоритмы поддерживают и постоянно работают по памяти через их область. будет преодолен путем использования итерации, например, реализации корневого искателя с интеллектуальной бисекцией по сравнению с потенциально невыизводимыми численными типами. < /p> Однако некоторые более сложные процедурные алгоритмы не могут быть легко написаны функционально, особенно если повторение определяется по процедурному состоянию. Алгоритмы.Unique_ptr[/code]: [code]template //still unconstrained (which is a plus) //... { auto ptr = std::unique_ptr{.../*dangling reference (T*)*/};
//... ptr = std::unique_ptr{.../*different dangling reference*/}; } < /code> Это решает проблему не ограничения типа, однако используемая память-это не память кучи. < /p> Назначение: < /p> template requires std::assignable_from //type constraint! //... { T assignable = .../*r-value*/;
//... assignable = .../*different r-value*/; } < /code> , в то время как он находится на куче, он поставляется по стоимости ограничения типа.template //type constraint! //... { T assignable = .../*r-value*/;
//... assignable.~T(); new (&assignable) T {.../*different r-value*/}; } [/code] путем деконструкции и построения снова с назначением новое значение - отскок, однако это все еще имеет связанное ограничение типа.