在范围符合规范N4622的Same概念被定义为采取两种类型T和U,但有时用作内requires只有一个这样的:
{ t } -> Same<T>;
Run Code Online (Sandbox Code Playgroud)
能够扣除第二种类型的规则是什么U?(例如来自Concepts spec N4630)
最简单的类似例子是:
template <class T, class U>
concept bool C = (sizeof(T) == sizeof(U)) && (sizeof(U) != 1);
template <class T>
concept bool D = requires(T t){
// How is U deduced here?
{t} -> C<T>;
};
template <class T>
requires D<T>
void fn() {}
int main() {
// Fails with: unable to deduce placeholder type 'C<char>' from 't' …Run Code Online (Sandbox Code Playgroud)