小编Yur*_*isk的帖子

符合条件的特殊会员功能和琐事

考虑以下代码:

#include <type_traits>

template<typename T>
concept Int = std::is_same_v<T, int>;

template<typename T>
concept Float = std::is_same_v<T, float>;

template<typename T>
struct Foo
{
    Foo() requires Int<T> = default; // #1
    Foo() requires Int<T> || Float<T> = default; // #2
};

static_assert(std::is_trivial_v<Foo<float>>);
Run Code Online (Sandbox Code Playgroud)

为了满足静态断言,Foo<float>需要是一个平凡的类型,因此,既然它是一个类类型,那就是一个平凡的类。因此,除了可以简单地复制(确实如此)之外,它还必须有一个合格的默认构造函数(并且所有此类构造函数都必须是简单的,class.prop#2 ),这是合格的特殊成员函数的特例,定义通过特殊#6

符合条件的特殊成员函数是指满足以下条件的特殊成员函数:

  • 该功能未删除,
  • 满足关联的约束([temp.constr])(如果有),并且
  • 没有同类的特殊成员函数受到更多限制([temp.constr.order])。

严格地说,Foo<float>不存在合格的默认构造函数,因为#1不满足 的约束,并且#2存在更受约束的默认构造函数 ( #1)。因此,Foo<float>这不是一个简单的课程。但是,上面的代码可以在 …

c++ language-lawyer c++20

7
推荐指数
1
解决办法
212
查看次数

单字符winApi文本框

可以做单字符文本框吗?换句话说,输入 1 个字符后,不得输入用户将要输入的其他字符;

c++ winapi

2
推荐指数
1
解决办法
1503
查看次数

标签 统计

c++ ×2

c++20 ×1

language-lawyer ×1

winapi ×1