C++ C++;11 typedef别名编译错误

C++ C++;11 typedef别名编译错误,c++,c++11,alias,typedef,C++,C++11,Alias,Typedef,当我尝试编译此文件时,会出现以下错误: error: expected unqualified-id before ‘using’ 我知道,这个问题以前被问过好几次,但我没有找到答案。通常他们会说其中一个头文件中缺少分号。但现在不是这样。当然,我使用-std=c++0x标志 #include <iostream> #include <string> #include <vector> template <typename T> using s

当我尝试编译此文件时,会出现以下错误:

error: expected unqualified-id before ‘using’
我知道,这个问题以前被问过好几次,但我没有找到答案。通常他们会说其中一个头文件中缺少分号。但现在不是这样。当然,我使用
-std=c++0x
标志

#include <iostream>
#include <string>
#include <vector>


template <typename T>
using stringpair = std::pair<std::string, T>;

int main (int argc, char* argv[]) {


    return 0;
}
#包括
#包括
#包括
模板
使用stringpair=std::pair;
int main(int argc,char*argv[]){
返回0;
}
您的错误是因为这是一个C++11功能,而您的编译器不支持它。您应该在编译时添加相应的标志。最有可能的是:

-std=c++11
(至少适用于
g++
clang++


否则,编译器还不支持它们。GCC.

我知道,我正在编译,用这个option@balping,很抱歉,但这是复制错误的唯一方法。因此,您显然没有使用该选项进行编译。@balping,也许您的编译器还不支持它。据我所知,MSVC、GCC和Clang都支持他们的最新版本。这个AdHH.Pielson,模板别名。GDCC 4.7系列中都引入了模板别名和<代码> -STD= C++ 11 <代码>,早期版本使用了旗<代码> -STD= C++ +0x,以支持C++的“下一个”版本。因此,如果(g++)编译器接受
-std=c++11
,它也应该接受模板别名。什么编译器和版本?