vendredi 8 juin 2018

c++11 unsigned char becoming int when using operator =

c++11 unsigned char becoming int when using operator =, example code below:

#include <iostream>

int main(int argc, char* argv[]) {
    class uchar {
    public:
        uchar(unsigned char c)
        : c_(c) {

        }
    private:
        unsigned char c_;
    };
    const unsigned char c2 = 5;
    uchar c1(5);

    // output: 1 1
    std::cout << sizeof(c1) << " " << sizeof(c2) << std::endl; 
    // compile error: invalid operands to binary expression ('uchar' and 'int')
    std::cout << (c1 == c2) << std::endl; 
}

can somebody explain why the above error ?

using clang++ v6.0 -std=c++11

Aucun commentaire:

Enregistrer un commentaire