C++ C++;模板/专门化

C++ C++;模板/专门化,c++,templates,C++,Templates,我想有一个类,可以使用或不使用模板参数访问。请参见下面的示例。我做了一些研究,但没有发现任何有用的东西,除了模板专门化,但这不是我想要的 class Execute { ... } template<class T> class Execute { ... } 类执行 { ... } 模板 类执行 { ... } 我希望能够创建这些类的对象,如: Execute exec1; Execute<int> exec1; 执行exec1; 执行exec1; 有

我想有一个类,可以使用或不使用模板参数访问。请参见下面的示例。我做了一些研究,但没有发现任何有用的东西,除了模板专门化,但这不是我想要的

class Execute
{
  ...
}

template<class T>
class Execute
{
  ...
}
类执行
{
...
}
模板
类执行
{
...
}
我希望能够创建这些类的对象,如:

Execute exec1;
Execute<int> exec1;
执行exec1;
执行exec1;

有人对如何实现这一点有想法吗?我做了几次设置,但没有一次成功。

不完全是您想要的,但您可以指定默认模板参数:

template<class T = void>
class Execute
{
};

template<>
class Execute<void>
{
};

Execute<> exec1; // Instantiates Execute<void>
Execute<int> exec2;
模板
类执行
{
};
模板
类执行
{
};
执行exec1;//实例化执行
执行exec2;

不完全是您想要的,但您可以指定默认模板参数:

template<class T = void>
class Execute
{
};

template<>
class Execute<void>
{
};

Execute<> exec1; // Instantiates Execute<void>
Execute<int> exec2;
模板
类执行
{
};
模板
类执行
{
};
执行exec1;//实例化执行
执行exec2;

不完全是您想要的,但您可以指定默认模板参数:

template<class T = void>
class Execute
{
};

template<>
class Execute<void>
{
};

Execute<> exec1; // Instantiates Execute<void>
Execute<int> exec2;
模板
类执行
{
};
模板
类执行
{
};
执行exec1;//实例化执行
执行exec2;

不完全是您想要的,但您可以指定默认模板参数:

template<class T = void>
class Execute
{
};

template<>
class Execute<void>
{
};

Execute<> exec1; // Instantiates Execute<void>
Execute<int> exec2;
模板
类执行
{
};
模板
类执行
{
};
执行exec1;//实例化执行
执行exec2;

您实际想做什么?另请参见模板专门化是您唯一的选择,而不是安东在下面指出的默认模板参数。您实际想做什么?另请参见模板专门化是您唯一的选择,除了安东在下面指出的默认模板参数之外。您实际想做什么?请参见模板专门化是您唯一的选择,而不是安东在下面指出的默认模板参数。您实际想做什么?请参见模板专门化是您唯一的选择,除了安东在下面指出的默认模板参数之外。感谢您的评论,这可能是一个选项!但是,假设我需要两个不同的构造函数,一个用于类型为void的Execute类,另一个用于所有其他类型。我可以用C++ 11方法做同样的检查,但是我在想,如果没有C++ 11,怎么可能呢?@ C.DrICVistReTeTeN,你只需专门编写代码>执行< /代码>,然后做你想做的任何事情。查看我的更新答案。谢谢你的评论,这可能是一个选项!但是,假设我需要两个不同的构造函数,一个用于类型为void的Execute类,另一个用于所有其他类型。我可以用C++ 11方法做同样的检查,但是我在想,如果没有C++ 11,怎么可能呢?@ C.DrICVistReTeTeN,你只需专门编写代码>执行< /代码>,然后做你想做的任何事情。查看我的更新答案。谢谢你的评论,这可能是一个选项!但是,假设我需要两个不同的构造函数,一个用于类型为void的Execute类,另一个用于所有其他类型。我可以用C++ 11方法做同样的检查,但是我在想,如果没有C++ 11,怎么可能呢?@ C.DrICVistReTeTeN,你只需专门编写代码>执行< /代码>,然后做你想做的任何事情。查看我的更新答案。谢谢你的评论,这可能是一个选项!但是,假设我需要两个不同的构造函数,一个用于类型为void的Execute类,另一个用于所有其他类型。我可以用C++ 11方法做同样的检查,但是我在想,如果没有C++ 11,怎么可能呢?@ C.DrICVistReTeTeN,你只需专门编写代码>执行< /代码>,然后做你想做的任何事情。请参阅我的最新答案。