如何在 SFINAE 中使用模板结构的成员非模板函数的概念?

How to SFINAE using concepts on member non-template function of a template struct?

背景

我正在写一个对象池。我想提供一个构造函数,它只接受默认构造的元素计数。已经有一个 concept,我想尝试为此使用 C++20 功能。

代码

template <typename T, std::size_t capacity>
class object_pool {
/*
    storage for uninitialized objects
    used flags
    size
    etc...
*/

public:
    ??? object_pool(std::size_t count = capacity) {
        /* initialization */
    }

};

我可以用传统的方式进行 SFINAE,它看起来像:

template <typename = std::enable_if_t<std::is_default_constructible_v<T>>>
object_pool(std::size_t count = capacity) {
  /*...*/
}

问题

概念可以用于SFINAE模板的成员函数class/struct吗?如果可以,怎么做?

你可以在签名后加上一个requires表达式

object_pool(std::size_t count = capacity) requires std::default_initializable<T> {
  /*...*/
}

Example