らんだむな記憶

blogというものを体験してみようか!的なー

std::array の引数を省略してしまう

#include <cstdio>
#include <array>

int main(void) {
  constexpr std::array a{1, 2, 3};

  for (const auto& e: a) {
    printf("%d\n", e);
  }

  return 0;
}

こういうものを書いたとして、いかにもな箇所が std::array<int, 3> a{1, 2, 3}; であれば clang++ -std=c++11 くらいでコンパイルできる。が、上記までくると clang++ -std=c++17 以上でないとコンパイルできない。というか・・・これどういう感じなの?推論が拡張されているのか?

クラステンプレートのテンプレート引数推論 - cpprefjp C++日本語リファレンス を見るとなるほどね。クラステンプレートのテンプレート引数推論と・・・。