腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
文章
问答
(9999+)
视频
沙龙
1
回答
如何在可能使用
SFINAE
的
类型中检查字段
的
存在?
c++
、
linux
、
gcc
、
c++11
我有
一个
叫做“特征”
的
结构,它是T型
模板
,“特征”有
一个
叫做“大小”
的
字段。当T实际上有
一个
名为Size
的
字段时,代码就会编译,一切都会正常工作。但是,当T是本机类型时,它显然
没有
Size字段,而且代码无法编译struct Traits static const size_t Size = T::Size;我试着用
SFINAE
写它,但是它仍然不能编译 templa
浏览 3
提问于2014-08-11
得票数 4
回答已采纳
1
回答
没有
void_t
的
SFINAE
(
可能是
一个
模板
专门化
问题
)
c++
、
sfinae
、
void-t
很抱歉标题,我不确定我
的
问题
的
类别。我正在试着用
SFINAE
做
一个
is_incrementable。这可以很好地工作,但是当我试图更深入地理解它时,当我删除
void_t
时,代码片段就不会像预期
的
那样工作。is_incrementable<int, void>::value,它是原始
的
模板
类,也是
专门化
。在这种情况下,编译器选择
专门化
版本,因此值等于1。对于字符串版本,
专门化</e
浏览 6
提问于2021-03-07
得票数 3
回答已采纳
1
回答
SFINAE
在VS2017上
的
编译错误
c++
、
compiler-errors
、
visual-studio-2017
、
template-meta-programming
、
sfinae
member_name): std::false_type {};\struct str_cat(has_, member_name)<T, typename
SFINAE
<decltype(T::member_name)>::type>\struct
SFINAE
{ has_void_t<B>::value;
浏览 1
提问于2018-08-28
得票数 0
回答已采纳
1
回答
如何避免在使用
SFINAE
时触发static_assert?
c++
、
templates
、
c++11
、
sfinae
、
static-assert
我想使用
SFINAE
(与一起)来确定类
模板
专门化
或实例化是否定义了特定
的
成员类型。但是,主类
模板
的
主体中有
一个
static_assert。是否可以在不修改主
模板
和不使用
的
情况下检索此信息?static_assert(Has<X<char>>::value == false, ""); // ERRORX<int>是
一个
显式
的<
浏览 3
提问于2015-12-22
得票数 3
2
回答
`
void_t
`是如何工作
的
c++
、
templates
、
c++14
、
sfinae
我观看了沃尔特·布朗在Cppcon14上关于现代
模板
编程(,)
的
演讲,他在会上介绍了他
的
void_t
SFINAE
技术。示例:template< class ... > using
void_t
= void; 以及下面的特征,该特征检查名为as has_member< T ,
浏览 39
提问于2014-12-29
得票数 166
回答已采纳
1
回答
C++11:
模板
参数中
的
SFINAE
,GCC对Clang
templates
、
c++11
、
gcc
、
clang
、
sfinae
我希望实现
一个
特性类,以确定某个类型是否正确重载了operator(),这样我就可以查询如下所示
的
类型:最初,我从中了解了如何实现这个
问题
Args>
void_t
<FunctorReturn<Functor, Args ...>> //
SFINAE
>>:
浏览 0
提问于2015-02-02
得票数 6
回答已采纳
1
回答
如果类型`T‘具有用于序列化自身
的
`template<>结构Writer<T>`,则为
c++
、
templates
我有
一个
Writer结构来做一些序列化 template<typename T>struct Writer<float> {}; 我想知道
一个
类型是否有专门
的
代码
没有
像预期<
浏览 15
提问于2021-08-31
得票数 3
回答已采纳
1
回答
如何解决像std::allocator_traits这样
的
可选嵌套类型?
c++
、
c++11
但是,我们总是可以在std::allocator_traits<Allocator>中使用这些接口,如果Allocator中
没有
这些类型,它将提供这些类型
的
默认版本。std::allocator_traits是如何实现
的
?当
模板
不存在时,如何选择嵌套类型
的
默认版本?
浏览 3
提问于2014-12-18
得票数 4
回答已采纳
1
回答
用于检测
模板
是否针对给定类型
专门化
的
特征类。
c++
、
template
、
c++14
、
sfinae
今天
的
问题
只是关于我在某个项目中需要
的
一个
小实用程序:
一个
模板
,用于检测
一个
模板
是否是特定类型
的
。该实用工具使用来自std::
void_t
的
C++17,但是这个别名
模板
非常简单,可以在您最喜欢
的
C++修订版中实现,无论它是:struct voiderusing
void_t</em
浏览 0
提问于2015-07-27
得票数 7
回答已采纳
3
回答
SFINAE
:编译器不会选择特定
的
模板
类
c++
、
templates
、
sfinae
我有
一个
问题
: typedef std::vector<int> Vec; Functor<Foo> ac;} 我如何修复它,以便自动使用专门
的
结构注我不想直接
专门化
Foo上
的
Functor结构,但我想
专门化
所有具有Vec
浏览 0
提问于2012-07-04
得票数 9
回答已采纳
1
回答
类
的
目的=在C++中为空?
c++
、
c++11
、
templates
、
c++14
、
void
在下面的代码片段中,class = void
的
用途是什么?class = void >struct has_type_member<T,
void_t
浏览 1
提问于2017-05-17
得票数 13
回答已采纳
1
回答
默认规范为什么主
模板
必须有
void_t
=
void_t
?
c++
、
sfinae
、
tmp
我有
一个
关于
void_t
元函数
的
问题
,视频中显示了这个
问题
,这个
问题
是在41:25问
的
。我将尝试用下面的代码片段来展示我
的
问题
:class __is_assignable_helper_af2false_type}; c
浏览 1
提问于2015-07-07
得票数 1
1
回答
在进行相似但不同
的
专门化
时,已经定义了类
模板
。
c++
、
templates
、
sfinae
、
template-specialization
我希望当T::A存在时使用其中之一,当T::B存在时使用另一种,这在实践中应该是多排
的
。我正在使用std::
void_t
<解密类型(.)>来测试是否存在。我希望这个表达式不能对其中
一个
或另
一个
专门化
进行评估,因此我希望
SFINAE
会导致其中
一个
专门化
被忽略。template< typename T, typename Enable = void > template< typename T >
浏览 18
提问于2022-11-23
得票数 1
回答已采纳
2
回答
理解别名
模板
c++
、
templates
、
alias
、
enable-if
、
c++17
我问了
一个
对代码有几个引用
的
:using
void_t
= void;为什么不直接在enable_if_t 或 conditional_t语句中计算传递给别名
模板
的
模板
参数呢?上面的代码是一次对多个
模板
参数执行enable_if_t吗? 其次,我认为我对
void_t
的
作用有
一个
具体
的<
浏览 0
提问于2015-05-18
得票数 4
回答已采纳
1
回答
在下面的has_member函数中,
SFINAE
没有
正确地工作?
c++
、
templates
、
c++11
、
template-specialization
、
sfinae
我正在尝试
的
示例,并试图使他
的
has_member实现正常工作。using
void_t
= void; struct has_type_member: std::false_type {};template <class T> struct has_type_member<T,
void_t
浏览 2
提问于2015-06-11
得票数 9
回答已采纳
3
回答
为什么
SFINAE
在这种情况下对我不正确,以及如何修复它?
c++
、
templates
、
c++14
、
sfinae
我试图在struct A中保留
一个
函数foo (打印0),如果它
的
参数有
模板
方法isA<void>,而另
一个
函数(打印1)
没有
。这段代码(简化为下面的最小示例)编译(使用gcc 6.1.0和clang-3.9.0,带有显式
的
--std=c++14选项)并运行。请只使用C++14解决方案。
浏览 8
提问于2017-09-08
得票数 3
回答已采纳
1
回答
针对各种集合
的
模板
类部分
专门化
c++
、
templates
、
c++11
、
template-specialization
我试图编写两个
模板
部分
专门化
,它们应该以不同
的
方式处理序列化序列容器和关联容器,但是似乎根本
没有
使用序列容器
专门化
,因为编译器试图用错误
的
专门化
来
专门化
它,下面是代码: { }如果我试着用Archiver<Writer, std::list<float>>::serialize(...); 该决议是关于第二个<em
浏览 1
提问于2016-03-12
得票数 1
回答已采纳
2
回答
对于其他类型,是否有
void_t
的
标准泛化?
c++
、
sfinae
、
c++17
在C++17中,我们使用了std::
void_t
,这使得
SFINAE
看起来要好看得多:std::
void_t
<decltype(T::prop)> foo() { /* stuff */ }template <typename T> void foo() { /* stuff *
浏览 5
提问于2017-06-23
得票数 9
回答已采纳
1
回答
部分专业化与std::
void_t
<>
的
需求
c++
、
language-lawyer
、
partial-specialization
一个
给语言律师..。 我在玩
SFINAE
和TMP,试图得到更深入
的
理解。对于NC情况,正如我所预期
的
那样,T()格式不太好,因此由于
SFINAE
而放弃了
专门化
,并且使用了主
模板
(false_type)。但是对于int
的
情况,我希望使用
专门化
,因为decltype(T())是有效
的
,并且等同于T。is_default_constructable<T, wrap<decltype(T())> >
浏览 0
提问于2018-10-18
得票数 0
2
回答
结合
void_t
和enable_if?
c++17
、
template-meta-programming
、
sfinae
、
enable-if
、
void-t
在C++17中,
void_t
允许使用class/struct
模板
轻松地执行class/struct
模板
:struct test {static constexpr auto text = "general case";struct test<T, std::
void_t
<decltype(std::begin(std::declval
浏览 4
提问于2018-03-01
得票数 4
回答已采纳
点击加载更多
热门
标签
更多标签
云服务器
对象存储
ICP备案
云点播
腾讯会议
活动推荐
运营活动
广告
关闭
领券