Например, std::enable_if - это жутчайший и уродский костыль, но наверняка Qraizer так не считает.
Я его не использую. Не нужно было просто. Но это и не костыль, это составная часть интерфейса std в части поддержки парадигмы метапограммирования, которая помимо этого средства включает в себя ещё и большое количество других. На основе этой парадигмы ты можешь учить компилятор работать с любыми сущностями на основе их свойств и характеристик, а не только пользоваться предопределёнными и стандартизированными наборами для ограниченного числа сущностей и определёнными в Стандарте. Или ты шейдеры для GPU тоже называешь костылями, тогда как истинно правильными и единственно правоверными считаешь mutlitexturing, еnvironment lighting, mipmapping, T&L и ещё с десяток предопределений?
Вернее, если это костыль, то и в D - тоже костыль.
Костыль, костыль. И то, и это тоже. Негоже управлять ресурсами вручную. Негоже строить безотказность кода на условных конструкциях, не имеющих отношения к инвариантам. За которые и непонятно кто ещё отвечает. И то, и другое, и третье имеет место в scope, как и где его не реализуй.