Неверные операнды в двоичном выражении после переключения с g++ на clang++ Ошибка возникает в утверждении

Я ценю любую помощь в этом вопросе, я немного гуглил и искал, и мне не хватает того, что происходит или как это исправить.

У меня есть код, ранее скомпилированный в командной строке с помощью g++, для которого я создал файл make, и я тестирую его с помощью компилятора clang. У меня до сих пор не было с этим проблем..

Вот ошибка

input.cpp:241:17: error: invalid operands to binary expression ('ifstream' (aka 'basic_ifstream<char>')
  and 'long')
            assert(casFile!=NULL);
                   ~~~~~~~^ ~~~~

Раздел кода, из которого он исходит,

char outfile[32],casfile[32];
ifstream outFile, casFile;

....other stuff unrelated...

casFile.open(casfile);
assert(casFile!=NULL);

В верхней части файла

#include "input.h"
#include <stdlib.h>
#include <stdio.h>
#include <cmath>
#include <vector>
#include <algorithm>
#include <assert.h>
#include <iostream>
#include <fstream>

using namespace std;

Я немного сбит с толку, потому что я прекрасно использовал это, пока не переключился на clang. Есть ли флаг, который мне не хватает?

-std=c++11 -stdlib=libc++ -g -Wall

Думаю, я включил всю необходимую информацию. Спасибо за помощь!!


person spacegirl1923    schedule 16.11.2016    source источник
comment
См. stackoverflow.com/questions/33187086/. До C++11 потоки можно было неявно преобразовать в void*, но не в C++11. Вместо этого было разрешено преобразование в bool, поэтому assert(casFile); делает то, что вы хотите, поскольку хороший поток преобразуется в true.   -  person John D    schedule 16.11.2016
comment
Джонатан Уэйкли в приведенной выше ссылке также обсуждает проблемы с GCC.   -  person John D    schedule 16.11.2016