Is it possible to disable bool operator<(float,int)










0















Can I, in C++, disable or force an explicit cast in operator< when comparing integer and floating types? Using operator< between integer and float types can easily lead to bugs in quantitative code. I tried bool operator<(double, int) = delete; but it expects one of the types to be a class or enum. How do I make the below fail to compile with a type error?



int main()

if (3.0 < 4)

std::cout << "X" << std::endl;

else

std::cout << "Y" << std::endl;

return 0;










share|improve this question






















  • It cannot be done natively. But you can look into various external tests.

    – Mooing Duck
    Nov 13 '18 at 21:43











  • Nuts. Do you mean taking a static analysis approach?

    – Carbon
    Nov 13 '18 at 21:43











  • I don't see the applicability of being able to do this. It's really a contract between the programmer and the compiler to not do stupid things. The end-client can't touch this.

    – DeiDei
    Nov 13 '18 at 21:59











  • In quant finance it's very common to have business users doing dev. I clean up.

    – Carbon
    Nov 13 '18 at 22:37















0















Can I, in C++, disable or force an explicit cast in operator< when comparing integer and floating types? Using operator< between integer and float types can easily lead to bugs in quantitative code. I tried bool operator<(double, int) = delete; but it expects one of the types to be a class or enum. How do I make the below fail to compile with a type error?



int main()

if (3.0 < 4)

std::cout << "X" << std::endl;

else

std::cout << "Y" << std::endl;

return 0;










share|improve this question






















  • It cannot be done natively. But you can look into various external tests.

    – Mooing Duck
    Nov 13 '18 at 21:43











  • Nuts. Do you mean taking a static analysis approach?

    – Carbon
    Nov 13 '18 at 21:43











  • I don't see the applicability of being able to do this. It's really a contract between the programmer and the compiler to not do stupid things. The end-client can't touch this.

    – DeiDei
    Nov 13 '18 at 21:59











  • In quant finance it's very common to have business users doing dev. I clean up.

    – Carbon
    Nov 13 '18 at 22:37













0












0








0








Can I, in C++, disable or force an explicit cast in operator< when comparing integer and floating types? Using operator< between integer and float types can easily lead to bugs in quantitative code. I tried bool operator<(double, int) = delete; but it expects one of the types to be a class or enum. How do I make the below fail to compile with a type error?



int main()

if (3.0 < 4)

std::cout << "X" << std::endl;

else

std::cout << "Y" << std::endl;

return 0;










share|improve this question














Can I, in C++, disable or force an explicit cast in operator< when comparing integer and floating types? Using operator< between integer and float types can easily lead to bugs in quantitative code. I tried bool operator<(double, int) = delete; but it expects one of the types to be a class or enum. How do I make the below fail to compile with a type error?



int main()

if (3.0 < 4)

std::cout << "X" << std::endl;

else

std::cout << "Y" << std::endl;

return 0;







c++






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 13 '18 at 21:41









CarbonCarbon

1,4211926




1,4211926












  • It cannot be done natively. But you can look into various external tests.

    – Mooing Duck
    Nov 13 '18 at 21:43











  • Nuts. Do you mean taking a static analysis approach?

    – Carbon
    Nov 13 '18 at 21:43











  • I don't see the applicability of being able to do this. It's really a contract between the programmer and the compiler to not do stupid things. The end-client can't touch this.

    – DeiDei
    Nov 13 '18 at 21:59











  • In quant finance it's very common to have business users doing dev. I clean up.

    – Carbon
    Nov 13 '18 at 22:37

















  • It cannot be done natively. But you can look into various external tests.

    – Mooing Duck
    Nov 13 '18 at 21:43











  • Nuts. Do you mean taking a static analysis approach?

    – Carbon
    Nov 13 '18 at 21:43











  • I don't see the applicability of being able to do this. It's really a contract between the programmer and the compiler to not do stupid things. The end-client can't touch this.

    – DeiDei
    Nov 13 '18 at 21:59











  • In quant finance it's very common to have business users doing dev. I clean up.

    – Carbon
    Nov 13 '18 at 22:37
















It cannot be done natively. But you can look into various external tests.

– Mooing Duck
Nov 13 '18 at 21:43





It cannot be done natively. But you can look into various external tests.

– Mooing Duck
Nov 13 '18 at 21:43













Nuts. Do you mean taking a static analysis approach?

– Carbon
Nov 13 '18 at 21:43





Nuts. Do you mean taking a static analysis approach?

– Carbon
Nov 13 '18 at 21:43













I don't see the applicability of being able to do this. It's really a contract between the programmer and the compiler to not do stupid things. The end-client can't touch this.

– DeiDei
Nov 13 '18 at 21:59





I don't see the applicability of being able to do this. It's really a contract between the programmer and the compiler to not do stupid things. The end-client can't touch this.

– DeiDei
Nov 13 '18 at 21:59













In quant finance it's very common to have business users doing dev. I clean up.

– Carbon
Nov 13 '18 at 22:37





In quant finance it's very common to have business users doing dev. I clean up.

– Carbon
Nov 13 '18 at 22:37












1 Answer
1






active

oldest

votes


















5














It's not possible to change the behaviour of built-in operators. You will have to detect this situation via compiler warnings or other code analysis tools.






share|improve this answer






















    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53289940%2fis-it-possible-to-disable-bool-operatorfloat-int%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    5














    It's not possible to change the behaviour of built-in operators. You will have to detect this situation via compiler warnings or other code analysis tools.






    share|improve this answer



























      5














      It's not possible to change the behaviour of built-in operators. You will have to detect this situation via compiler warnings or other code analysis tools.






      share|improve this answer

























        5












        5








        5







        It's not possible to change the behaviour of built-in operators. You will have to detect this situation via compiler warnings or other code analysis tools.






        share|improve this answer













        It's not possible to change the behaviour of built-in operators. You will have to detect this situation via compiler warnings or other code analysis tools.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 13 '18 at 21:44









        M.MM.M

        105k11116237




        105k11116237



























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53289940%2fis-it-possible-to-disable-bool-operatorfloat-int%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Top Tejano songwriter Luis Silva dead of heart attack at 64

            政党

            天津地下鉄3号線