Шаг 1. Подключение к Azure через Powershell
Теперь я установил Install-Module AzureAD
Вход в систему работает нормально.
Хорошая ошибка компилятора. Для этого типа проверок я всегда возвращаюсь к компилятору Comeau , прежде чем вернуться к стандарту и проверке.
Comeau C / C ++ 4.3.10.1 (6 октября 2008 г.) 11:28:09) для ONLINE_EVALUATION_BETA2 Copyright 1988-2008 Comeau Computing. Все права защищены. MODE: строгий ошибки C ++ C ++ 0x_extensions
«ComeauTest.c», строка 3: ошибка: «виртуальный» не допускается в функции шаблон декларация шаблон виртуальной пустоты f (); ^
"ComeauTest.c", строка 10: ошибка: «виртуальный» не допускается в функции шаблон декларация шаблон виртуальной пустоты f (); ^
Теперь, поскольку это было опубликовано другим пользователем, факт в том, что стандарт не позволяет вам определять виртуальные шаблонные методы. Обоснование заключается в том, что для всех виртуальных методов запись должна быть зарезервирована в виртуальной таблице. Проблема в том, что методы шаблона будут определены только тогда, когда они были созданы (использованы). Это означает, что vtable будет иметь разное количество элементов в каждом модуле компиляции, в зависимости от того, сколько разных вызовов в f () происходит с разными типами. Тогда ад поднимется ...
Если вам нужна шаблонная функция для одного из ее аргументов, а одна конкретная версия является виртуальной (обратите внимание на часть аргумента), вы можете сделать это:
class Base
{
public:
template <typename T> void f( T a ) {}
virtual void f( int a ) { std::cout << "base" << std::endl; }
};
class Derived : public Base
{
public:
virtual void f( int a ) { std::cout << "derived" << std::endl; }
};
int main()
{
Derived d;
Base& b = d;
b.f( 5 ); // The compiler will prefer the non-templated method and print "derived"
}
Если вы хотите это обобщается на любой тип, значит вам не повезло. Рассмотрим другой тип делегирования вместо полиморфизма (агрегация + делегирование могут быть решением). Дополнительная информация о рассматриваемой проблеме поможет найти решение.
Согласно http://www.kuzbass.ru:8086/docs/isocpp/template.html ИСО / МЭК 14882: 1998:
-3- Шаблон функции-члена не должен быть виртуальным.
Пример:
template <class T> struct AA {
template <class C> virtual void g(C); // Error
virtual void f(); // OK
};