The following snippet is rejected by Clang on C++17, accepted by GCC on C++17 and rejected by GCC on C++14. This is consistent with all recent compiler versions. What's the correct behavior ?
template <class T, class = int>
struct test1 {};
template <class T, template <class> class>
struct test2 {};
using test_t = test2<int, test1>;
EDIT: Apparently this is actually implemented on Clang, it just needs an explicit flag: -frelaxed-template-template-args which is not included when using -pedantic.