我认为下面的代码是有效的C ++ 11,但GCC(g ++(GCC)8.0.0 20170528)拒绝它;报告变量f
的类型不完整。虽然它使用-std=c++17
标志进行编译。谁能告诉我为什么?
#include <type_traits>
template <class> struct Foo;
template <
template <template <class ...> class> class MM,
template <class...> class M
>
struct Foo<MM<M>> {};
template <template <class ...> class, class...>
struct Bar { };
Foo<Bar<std::add_pointer>> f;