Нет способа ограничить видимость элемента интерфейса protected
.
Однако вы можете определить val
в интерфейсе и переопределить его с помощью var
в реализациях:
interface IFoo {
val s: String
}
class Foo : IFoo {
override var s = "bar"
protected set
get() = field.toUpperCase()
}
glibc 2.8 вообще не использует SSE для memcpy или memcmp (в x86 или x86_64) - он использует некоторую рукописную сборку, которая избегает всего, что не поддерживается на всех процессорах этого семейства. В glibc 2.10 будет поддерживаться новый тип перемещения, STT_GNU_IFUNC , что позволит улучшить оптимизацию на основе поддержки ЦП.
Если вы компилируете с максимальными настройками оптимизации, memcpy и memcmp могут быть заменены компилятором встроенными функциями и никогда не вызывать glibc вообще. Затем параметры компилятора mcpu и march выберут самый быстрый код.