、私は次のコードを持っている:これはMSVCで正常に動作GCCがテンプレート以外の機能を見つけられないのはなぜですか? ( "へ...呼び出しに該当する機能")MSVC 2008年
struct RenFlexibleVertexPc
{
enum { VertexType = RenVbufVertexComponentsPc };
float x;
float y;
float z;
GraVideoRgba8 c; // Video format, not external!
};
PixMaterial *material;
struct Pc : RenFlexibleVertexPc
{
void set(Triple t, uint cl) { x = (float)t.x_; y = (float)t.y_; z = (float)t.z_; c = cl; }
} vpc[4];
...
Foo *renderer;
renderer->drawVertices(4, RenPrimTriangleFan, material, vpc);
:
class Foo {
// Be a little smarter about deriving the vertex type, to save the user some typing.
template<typename Vertex> inline void drawVertices(
Elements vCount, RenPrim primitiveType, PixMaterial *mtl, Vertex const *vertices)
{
this->drawVertices(vCount, primitiveType, mtl, vertices, Vertex::VertexType);
}
virtual void drawVertices(
Elements vCount,
RenPrim primitiveType,
PixMaterial *mtl,
void const *vertices,
uint vertexType) = 0;
};
を私はそれのようなものを使用2008 SP1。しかし、GCC(3.4と4.1,2)は、関数呼び出しのための関数が一致しないため、より多くの引数を持つ非テンプレート関数がある場合、テンプレートを見ていないように見えます。
GCCは壊れていますか、またはコードが壊れていますか?その場合、なぜですか?
は、コンパイルエラーが発生したコードを示します –