LxL*_*LxL 4 c++ gcc templates variadic-templates c++11
我正在尝试编译以下代码:
#include <iostream>
template<template <typename...> class Container,class... Args>
struct Container
{};
template<class T1,class T2>
struct Store
{};
int main()
{
Container<Store,int,double> a;
}
//g++ -Wall -std=c++11 main.cpp
Run Code Online (Sandbox Code Playgroud)
我正在使用gcc 4.8.1,我收到以下错误:
internal compiler error: Segmentation fault
struct Container
^
Run Code Online (Sandbox Code Playgroud)
为什么gcc不编译呢?这段代码是否正确?
使用Clang进行编译会显示错误:
main.cpp:4:8: error: declaration of 'Container' shadows template parameter
struct Container
Run Code Online (Sandbox Code Playgroud)
如果你重命名结构或模板参数,代码也用g ++编译,我不知道它们的相同名称是偶然的还是故意的.
此外,g ++ 4.8.2和4.9工作正常,并给出与Clang类似的错误.