Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否有类似于强制模板参数的东西是从其他模板参数推导出来的?_C++_Templates - Fatal编程技术网

C++ 是否有类似于强制模板参数的东西是从其他模板参数推导出来的?

C++ 是否有类似于强制模板参数的东西是从其他模板参数推导出来的?,c++,templates,C++,Templates,假设我有一个模板,它接受3个模板参数。 我希望第三个模板参数由另一个模板使用,比如“CHECK”,如果CHECK失败,它可能返回任何整数,否则返回“1”。在“1”的情况下,X类是专用的。 如下面的代码所示。 如何实现它,即如何强制始终使用默认模板参数(目标是使其成为强制性而非默认)。如果需要这样的设计,应该怎么做? 简而言之,“我想阻止用户提供第三个参数” 模板 X类 { 公众: X() { 使用名称空间std; coutIIUC,您希望阻止用户提供第三个参数 将类X重命名为X_impl,并提供

假设我有一个模板,它接受3个模板参数。 我希望第三个模板参数由另一个模板使用,比如“CHECK”,如果CHECK失败,它可能返回任何整数,否则返回“1”。在“1”的情况下,X类是专用的。 如下面的代码所示。 如何实现它,即如何强制始终使用默认模板参数(目标是使其成为强制性而非默认)。如果需要这样的设计,应该怎么做? 简而言之,“我想阻止用户提供第三个参数”

模板
X类
{
公众:
X()
{
使用名称空间std;

coutIIUC,您希望阻止用户提供第三个参数

将类
X
重命名为
X_impl
,并提供一个新的
X
,参数更少:

template<typename T, typename D, int Int >
class X_impl;


template<typename T, typename D >
class X : public X_impl< T, D, CHECK<T, D>::IS_TRUE > {};
模板
类X_impl;
模板
类X:public X_impl{};

IIUC,您希望阻止用户提供第三个参数

将类
X
重命名为
X_impl
,并提供一个新的
X
,参数更少:

template<typename T, typename D, int Int >
class X_impl;


template<typename T, typename D >
class X : public X_impl< T, D, CHECK<T, D>::IS_TRUE > {};
模板
类X_impl;
模板
类X:public X_impl{};

在C++中,不允许使用< /COD>模板:{差异INT= CHEC::ISSUTHORE }。解耦实现,用户可以直接使用我不想要的实现。模板类可以嵌套模板类吗?模板类可以嵌套模板类吗?@ Sudhendu:是的,它(不是必要的)。是的,它可以。但我想我并不真正理解你的问题。从你的问题的源源不断的答案来看,我可能不是唯一一个。你已经解决了我的问题:)。你正确地理解了我的问题“IIUC,你想阻止用户提供第三个参数”。这就是我要找的。谢谢“SBI”模板在C++中是不允许的?{见差异INT= CHEC::ISSUTHORE }。解耦实现,用户可以直接使用我不想要的实现。模板类可以嵌套模板类吗?模板类可以嵌套模板类吗?@ Sudhendu:是的,它(不是必要的)。是的,它可以。但我想我并不真正理解你的问题。从你的问题的源源不断的答案来看,我可能不是唯一一个。你已经解决了我的问题:)。你正确地理解了我的问题“IIUC,你想阻止用户提供第三个参数”。这就是我要找的。谢谢“SBI”