Standards version switches in the compiler page has the following text:

The /std:c++14 switch enables the set of C++14 features implemented by the Visual C++ compiler, modulo conformance bug fixes and ongoing feature work (such as for constexpr, expression SFINAE, 2-phase name lookup, etc.)

I treated this text as: "/std:c++14 switch enables some set of C++14 features, including bug fixes and changes made for constexpr, expression SFINAE, 2-phase name lookup, etc". My practice has shown that I was wrong. In particular, "2-phase name lookup" isn't affected by /std:c+14.

In a topic devoted to Visual C++ I got an explanation, that:

The wording you quoted means it enables C++14 features except for constexpr, expression SFINAE, 2-phase name lookup, etc., which are not yet implemented.

I neither could ask English language specific question in the programming topic, nor write a private message to the man.

Therefore, I asked my question here: why the first quote in this post means the second quote?


Yes, modulo can have a meaning of "ignoring" or "except". It's has been discussed on ELU, here.

The pattern

X modulo Y

is an informal but common parlance in technical, especially mathematically, oriented talk. It is used to mean informally

X, ignoring Y.

For example,

The rocket design was flawless, modulo the toxic waste produced by its fuel.

It also has these related meanings

  • Correcting or adjusting for something, as by leaving something out of account:
    This proposal is the best so far, modulo the fact that parts of it need modification.
  • Except for differences accounted for by.
    "A is the same as B modulo C" means A is the same as B except for differences accounted for by C.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.