Поделиться через


Предупреждение компилятора (уровень 1) C4836

нестандартное расширение: "тип": локальные или непоименованные типы не могут использоваться как аргументы шаблонов

Стандарт C++ не разрешает использовать локальные типы как аргументы шаблонов, но компилятор Visual C++ позволяет это с параметром /Ze. C4836 является информационным предупреждением, которое извещает, что выполняется запись несовместимого кода. Дополнительные сведения см. в разделе /Za, /Ze (отключить расширения языка).

Предупреждение C4836 по умолчанию отключено. Дополнительные сведения см. в разделе Compiler Warnings That Are Off by Default.

Пример

В следующем примере показано возникновение ошибки C4836.

// C4836.cpp
// compile with: /W1
#pragma warning(default:4836)
template <class T>
struct TA {};

struct R {
public:
   void f() {
      struct S {};
      TA<S> ta;   // C4836
   }
};

int main() {
   R r;
   r.f();
}