gpt4 book ai didi

c++ - 根据类模板参数敲除类模板构造函数

转载 作者:搜寻专家 更新时间:2023-10-31 00:58:38 25 4
gpt4 key购买 nike

<分区>

给定以下类模板:

#include <type_traits>

template< class T, class Unrelated >
struct MyClass
{
static_assert( std::is_same< T, char >::value ||
std::is_same< T, char16_t>::value ||
std::is_same< T, char32_t >::value,
"MyClass only defined for char, char16_t, char32_t" );
MyClass( T init ) {}
MyClass( char32_t init ) {}
// ...
};

第二个 ( char32_t ) 构造函数是 T == char 的特例和 T == char16_t .

显然,它会为 T == char32_t 生成错误.所以,我想为这种情况“淘汰”那个构造函数。该类相当大,大部分代码为所有人共享 T ,所以我宁愿不将整个类(class)专门用于 char32_t案例。

我看过 enable_if 以及相关的答案,如 this one在这里,但无法根据我的具体情况(类模板中的非模板化构造函数)调整任何提出的解决方案/示例。

所以我请求你的帮助:

如何禁用 MyClass( char32_t ) MyClass< T, U > 的构造函数与 T == char32_t ?

或者,如果那更容易,如何禁用 MyClass( T init ) T == char32_t 的构造函数? (对于 char32_t ,这两个构造函数在功能上是相同的。)

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com