是 - 括号 - 构造的类型特征 [英] Is-braces-constructible type trait
问题描述
我如何检查特定类型的类型名称牛逼
是否从方式参数类型名称参数... args
构造的 T {参数数量...}
?我知道的std :: is_constructible&LT的; T,参数数量...>
键入从&LT特质; type_traits>
,但它使用括号,而不是大括号的作品。我没有在型性状写作太多的经验,所以我不能提供最初的例子。作为简化我们可以接受的任何合理的断言,即使这将导致一般性不太显著损失
模板< T类,类型名称参数... args>
decltype(无效(T {性病:: declval<&参数数量GT;()...})的std :: true_type())
试验(INT);模板< T类,类型名称参数... args>
的std :: false_type
测试(...);模板< T类,类型名称参数... args>
结构is_braces_constructible:decltype(测试< T,参数数量...>(0))
{
};
How can I check whether specific type typename T
is constructible from arguments typename ...Args
in the manner T{Args...}
? I aware of std::is_constructible< T, Args... >
type trait from <type_traits>
, but it works with parentheses, not curly braces. I do not have too much experience in writing of type traits, so I cannot provide initial example. As simplification we can accept any reasonable assertions, even if this leads to not too significant loss of generality.
template<class T, typename... Args>
decltype(void(T{std::declval<Args>()...}), std::true_type())
test(int);
template<class T, typename... Args>
std::false_type
test(...);
template<class T, typename... Args>
struct is_braces_constructible : decltype(test<T, Args...>(0))
{
};
这篇关于是 - 括号 - 构造的类型特征的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!