C ++模板别名G ++ 5.4

时间:2019-01-27 19:46:21

标签: c++11 templates aliasing

我无法编译任何琐碎的C ++别名声明。 这是我的开发环境:

g++ (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609

这是我的代码段(文件tstFrameProd.cpp):

template<typename T = double>
struct mystruct {};

template<typename T = double> using myalias = mystruct<T>;

int main(int argc, char *argv[])
{
      return 0;
}

这是我的编译过程:

g++  -g -std=c++11  -W -Wall -I../include  -I../../../Toolbox/CShmRingBuf/ -I/opt/matrox_imaging/mil/include -Woverloaded-virtual -ansi -pipe -fno-for-scope -DGNU_GCC  -DDEBUG   -c -o tstFrameProd.o tstFrameProd.cpp

这是我的编译错误消息:

tstFrameProd.cpp:20:31: error: expected unqualified-id before ‘using’
 template<typename T = double> using myalias = mystruct<T>;

任何提示都非常欢迎。

干杯!

西尔万

1 个答案:

答案 0 :(得分:1)

您正在使用-ansi进行编译,这会抵消-std=c++11的影响。只需将其删除。