考虑这段代码:
template < auto What >
constexpr auto Identity = [](auto&&...) { return What; };
struct Ban
{
Ban() = default;
Ban(const Ban& ban) = delete;
Ban( Ban&& ban) = delete;
};
int main()
{
Ban ban;
Identity<false>(10,ban);
return 0;
}
这无法在godbolt.org上编译,gcc-7.3
因为它试图复制Identity
. 为什么应该?这是一个错误gcc
吗?
gcc
如果第二个参数是暂时的或只有一个参数,则不会抱怨。Identity
当定义是 with(...)
而不是时,它只抱怨一个参数(auto&&...)
。