海湾合作委员会似乎不赞成与本地类实施模板:

template <typename T>
void f(T);

void g()
{
    struct s {};

    f(s()); // error: no matching function for call to 'f(g()::s)'
}

VC不抱怨。

应该如何完成?

有帮助吗?

解决方案

在C ++ 03中,这是无法完成的,C ++ 0x将 电梯 但是那个限制。

C ++ 03, §14.3.1/2:

本地类型,没有连接的类型,未命名类型或从任何这些类型中复合的类型或类型不得用作模板类型参数的模板题词。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top