編譯器警告 (層級 1) C4836

使用非標準擴充: 'type' : 區域型別或未命名型別不可做為 template 引數

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();
}