次のコードを CLANG でコンパイルすると:
#include <iostream>
#include <array>
#include <algorithm>
#include <functional>
int main() {
std::array<int, 2> a = {1, 2};
std::array<int, 2> b = {2, 1};
std::array<int, 2> c;
std::transform(a.begin(), a.end(), b.begin(), c.begin(), std::multiplies<int>());
for(auto &&i : c) std::cout << i << " ";
std::cout << std::endl;
}
次のコマンドを発行します。
clang++ -std=c++14 -O2 -Wall -pedantic -pthread main.cpp
次の警告が表示されます。
警告: サブオブジェクトの初期化を囲む中括弧を提案します [-Wmissing-braces]
ただし、GCC はこのプログラムをコンパイルしても、警告はまったく出されません。
Q:
- どのコンパイラが正しいですか?
- Clangs が警告する理由は何ですか?