为什么以下声明无效?
template<template<typename> typename T>
struct S {};
我认为这是有效的,因为以下内容是有效的:
template<template<typename> class T>
struct S {};
根据[gram.temp]中的标准,我认为它是有效的。但是gcc给出了以下输出:
prog.cpp:4:38: error: expected 'class' before 'T'
template<template<typename> typename T>
^