Мы только что сгорели от опечатки: " constexpr bool maxDistance = 10000; "
И gcc, и clang компилируют это без предупреждения.
Настоящая ошибкав данном случае переменная не должна иметь тип bool, а должна быть целочисленным типом.
Как мы можем гарантировать, что мы получим предупреждение компилятора в будущем?
#include <iostream>
constexpr bool number = 1234;
int main(int argc, char* argv[])
{
std::cout << number + 10000 << std::endl; // prints 10001.
return number;
}
Ошибка здесь заключается в том, что переменная объявлена с неправильным типом, однако ни clang, ни gcc не выдают предупреждение.
gcc -Wall -std=c++14 test.cpp -lstdc++
clang -Wall -std=c++14 test.cpp -lstdc++
(с использованием gcc 5.4.0 и clang 3.8.0)
Примечание: с тех пор я узнал о возможном флаге компиляции: -Wint-in-bool-context
однако, похоже, он не реализован ни в используемой версии (5.4.0), ни в clang (3.8.0)).
Это правильный путь?