In a.hpp
I definiert:C++ abhängiger Name: Ist dieser Typname erforderlich?
#include <utility>
namespace Board {
template<int W, int H>
struct GroupNode
{
using PointType = std::pair<int, int>;
// ...
};
}
Dann in b.cpp
I definiert:
#include "a.hpp"
namespace Board {
template<int W, int H>
struct NodeList
{
using StdList = std::list < /* typename */ GroupNode<W, H>>;
}
}
// and then use NodeList<19, 19> nl;
Der obige Code sowohl auf gcc-6 kompiliert werden könnte und klirren-3.9 ohne Warnung. Allerdings klagte Clion 2016.3 cannot resolve variable GroupNode
in b.cpp
. Ein Kommentar typename
konnte Clion Warnung zähmen, aber ich fragte mich, ob diese typename
erforderlich ist? Wenn ja, warum gab g ++/clang ++ keine Warnungen aus?