Вам необходимо добавить ключевое слово template
:
template
T g() {
return A::template f();
}
A
- это зависимое имя (зависит от параметра шаблона type
). Чтобы правильно проанализировать этот оператор, когда встречается определение шаблона (как того требуют правила двухфазного поиска), компилятор должен знать перед его созданием , является ли f
переменной, типом или шаблоном. По умолчанию это «переменная»; добавьте template
для обозначения шаблона или typename
для обозначения типа.
Ваш другой случай работает, потому что в return A
нет зависимого имени.
Попробуйте это:
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" onKeyUp="this.blur();">
С onKeyUp = "this.blur ()"; управление потеряет фокус, когда ключ будет ненажат, и это инициирует onChange событие.
Попытайтесь установить свойство 'AutoPostBack' управления DropDownList к 'истинному'.
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true">
</asp:DropDownList>
Посмотрите ListControl. Свойство AutoPostBack на MSDN для большего количества информации
Получает или устанавливает значение, указывающее, происходит ли обратная передача к серверу автоматически, когда пользователь изменяет выбор списка.
Я думаю, что необходимо выйти из-под контроля при использовании клавиатуры для увольнения события.
Если Вы хотите, чтобы это работало с клавишами со стрелками, необходимо использовать клиентское событие, onKeyDown
.