Цвет изменения и появление стрелки выпадающего списка

Я могу проверить в Clang 3.4.1 std = c ++ 11.

Вот мои выводы:

int i = f().a[0] будет верным: вы получаете ссылку на временная структура, время жизни временного увеличивается на длительность ссылки, вы принимаете значение: fine.

int *i = &f().a[0] принимается компилятором. Тем не менее, предупреждение f о том, что вы возвращаете ссылку на локальный временный объект , имеет смысл здесь. Время жизни временного объекта увеличивается на время ссылки: здесь время для копирования адреса. Как только вы берете адрес a, содержащий объект исчезает, и у вас есть только оборванная ссылка .

int *i = f().a - это точно такой же случай, как и предыдущий.

Но когда вы делаете &f().a, вы принимаете адрес rvalue типа 'int [3]' , и нет смысла брать такой адрес : вы можете использовать только его значение.

Давайте перейдем еще дальше:

S s = f(); верен. Вы получаете ссылку на временную структуру, время жизни временного расширения на длительность ссылки, вы принимаете значение: fine.

Теперь &s.a[0] является четко определенным указателем на int , as is int *ix2 = &static_cast<S&&>(s).a[0];

Вы даже можете записать: int (*ix3)[3] = &s.a;, чтобы принять адрес массива до 3 int, но по той же причине вы не можете написать &static_cast<S&&>(s).a, потому что вы адрес rvalue типа 'int [3]'

TL / DR

С S s = f(); s.a является четко определенным значением r, s.a[0] является корректным значением lvalue (вы можете написать s.a[0] = 5;).

f().s является rvalue, но с его помощью будет вызываться UB, потому что он заканчивается ссылкой на временный объект, который будет быть уничтожен, прежде чем вы сможете его использовать.

f().s[0] может использоваться как хорошо определенное значение rvalue. Вы можете использовать его как lvalue, но по той же причине, что и выше, он будет вызывать UB.

64
задан Iris 4 March 2009 в 16:57
поделиться

5 ответов

Нет, форма перекрестного браузера custimization очень тверда если не невозможный разобраться в нем для всех браузеров. Если Вы действительно заботитесь о появлении тех виджетов, необходимо использовать реализацию JavaScript.

см. http://www.456bereastreet.com/archive/200409/styling_form_controls/ и http://developer.yahoo.com/yui/examples/button/btn_example07.html

19
ответ дан TomHastjarjanto 7 November 2019 в 12:17
поделиться

Не легко сделанный я боюсь. Проблемой является Css, не может заменить стрелку в выборе, поскольку это представляется браузером. Но можно создать новое управление из отделения и ввести элементы и JavaScript для выполнения той же функции как выбор.

Попытка, смотрящая на некоторые плагины автоматического заполнения для JQuery, например.

Иначе существует некоторая информация об избранном элементе здесь:

http://www.devarticles.com/c/a/Web-Style-Sheets/Taming-the-Select/

1
ответ дан Richard 7 November 2019 в 12:17
поделиться

Нет, Вы не можете сделать этого при помощи фактического <select>, но существуют методы, которые позволяют Вам "заменять" их решениями JavaScript тот взгляд лучше.

Вот хорошая статья о теме: < выберите> Что-то Новое

1
ответ дан Chad Birch 7 November 2019 в 12:17
поделиться

<select> элемент сгенерирован приложением, и моделирование не является частью спецификации CSS/HTML.

необходимо было бы фальсифицировать его с собственным DIV и наложить его сверху существующего или создать собственное управление, эмулирующее ту же функциональность.

4
ответ дан Diodeus - James MacFarlane 7 November 2019 в 12:17
поделиться

Если Вы не планируете создание Вашего собственного выпадающего списка (и не использование стандартного выпадающего списка библиотеки), Вы застреваете. Взгляд управления DDL будет основанным на системе, которую Вы выполняете и/или браузер, который представляет вывод.

0
ответ дан TheTXI 7 November 2019 в 12:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: