的函数签名std::apply
不将模板参数限制为Tuple
的特化std::tuple
,因此它仍然可以接受定义(godbolt)的类似元组的对象:std::tuple_size_v
#include <tuple>
#include <utility>
#include <array>
int main() {
std::apply([](int, int) {}, std::array{0, 0});
std::apply([](int, int) {}, std::pair {0, 0});
std::apply([](int, int) {}, std::tuple{0, 0});
}
但是[tuple.apply]std::apply
中的描述是:
20.5.5 调用带有
tuple
参数的函数
这是否意味着应用于std::apply
对象以外的对象std::tuple
是未定义的行为?