gpt4 book ai didi

c++ - 默认模板模板参数值是否推导上下文?

转载 作者:可可西里 更新时间:2023-11-01 17:55:38 26 4
gpt4 key购买 nike

我真的很惊讶 gcc 和 clang 都接受这个代码:

#include <iostream>
#include <vector>
#include <type_traits>

template <class T, template <class, class = T> class TT, class Y>
T foo(TT<Y>) {
}

int main() {
static_assert(std::is_same<decltype(foo(std::vector<int>{})), std::allocator<int>>::value);
}

gcc 和 clang 是否正确认为默认模板模板参数的值是推导上下文还是编译器扩展?

最佳答案

当你写作时

template <class T, template <class, class = T> class TT, class Y>
T foo(TT<Y>);

相当于

template <class T, template <class, class = T> class TT, class Y>
T foo(TT<Y, T>);

因此可以推导出T

关于c++ - 默认模板模板参数值是否推导上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41027035/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com