Skip to content

败犬日报 2024-12-23

1. 万能引用不匹配初始化列表

effective cpp 老生常谈。

cpp
void f(auto &&) { std::cout << "1" << std::endl; }
void f(auto (&&)[]) { std::cout << "2" << std::endl; }
int main() {
    f({1, 2, 3});
    auto &&x = {1, 2, 3};
    f(std::move(x));
}

输出是 2 和 1。

auto (&&)[] 是对无边界数组的右值引用。

2. sqlite 在什么场景下比较适合

sqlite 轻量、性能高,而且代码很可靠,基本没有乱七八糟的 bug。这些特点决定了 sqlite 适合没有分布式、并发之类复杂场景,就是想找个位置存数据的时候。

sqlite 可以当成本地文件存储的上位替代,而不太适合当 dbms 用。

Android 官方建议的复杂本地存储库 Room 就是基于 sqlite 的。