CodeNebula
C++98stlbeginner

std::logical_or

C++98 · The Foundation · Compiler flag: -std=c++98

Explanation

Performs logical OR on two values.

Real-World Scenario

Allow access if one of two permissions is granted.

Quick Snippet

snippet.cpp
std::logical_or<bool> or_op; or_op(true, false);

Full Example

logical_or.cpp
// CodeNebula - C++98 Example: std::logical_or
// Compile: g++ -std=c++98 -Wall -Wextra -o example logical_or.cpp

#include <iostream>
#include <functional>
#include <algorithm>

int main() {
    bool a[] = {true, true, false, false};
    bool b[] = {true, false, true, false};
    bool result[4];

    // Element-wise logical OR
    std::transform(a, a + 4, b, result, std::logical_or<bool>());

    std::cout << "a:        ";
    for (int i = 0; i < 4; ++i) std::cout << a[i] << " ";
    std::cout << std::endl;

    std::cout << "b:        ";
    for (int i = 0; i < 4; ++i) std::cout << b[i] << " ";
    std::cout << std::endl;

    std::cout << "a OR b:   ";
    for (int i = 0; i < 4; ++i) std::cout << result[i] << " ";
    std::cout << std::endl;

    // Check if any element is true (fold with logical_or)
    bool arr[] = {false, false, true, false};
    bool any = false;
    for (int i = 0; i < 4; ++i) any = std::logical_or<bool>()(any, arr[i]);
    std::cout << "Any true in {0,0,1,0}: " << (any ? "yes" : "no") << std::endl;

    return 0;
}

// Expected output:
// a:        1 1 0 0
// b:        1 0 1 0
// a OR b:   1 1 1 0
// Any true in {0,0,1,0}: yes
Run command
g++ -std=c++98 -Wall -Wextra -o example logical_or.cpp