Skip to content
败犬日报 2026-01-16

败犬日报 2026-01-16

1. 左值隐式转换后匹配到右值引用

这是一道 cppquiz

cpp
#include <iostream>

void f(float &&) { std::cout << "f"; }
void f(int &&) { std::cout << "i"; }

template <typename... T>
void g(T &&... v)
{
    (f(v), ...);
}

int main()
{
    g(1.0f, 2);
}

答案是输出 if

f(1.0f), f(2) 从左到右求值没问题,关键在于 v 是具名的,是个左值,不能匹配到自己类型的右值引用,选择隐式转换成临时值绑定 float lvalue -> int prvalue int lvalue -> float prvalue

2. C++26 反射已合入 GCC 主线

望周知。