Some checks failed
CodeQL Code Scanning / CodeQL (push) Has been cancelled
Build Application / Build Debug (push) Has been cancelled
Nix / Build (${{ matrix.system }}) (macos-13, x86_64-darwin) (push) Has been cancelled
Nix / Build (${{ matrix.system }}) (macos-14, aarch64-darwin) (push) Has been cancelled
Nix / Build (${{ matrix.system }}) (ubuntu-22.04, x86_64-linux) (push) Has been cancelled
Nix / Build (${{ matrix.system }}) (ubuntu-22.04-arm, aarch64-linux) (push) Has been cancelled
Update Flake Lockfile / update-flake (push) Has been cancelled
24 lines
625 B
C++
Executable File
24 lines
625 B
C++
Executable File
#pragma once
|
|
|
|
template <typename T>
|
|
class DefaultVariable {
|
|
public:
|
|
DefaultVariable(const T& value) { defaultValue = value; }
|
|
DefaultVariable<T>& operator=(const T& value)
|
|
{
|
|
currentValue = value;
|
|
is_default = currentValue == defaultValue;
|
|
is_explicit = true;
|
|
return *this;
|
|
}
|
|
operator const T&() const { return is_default ? defaultValue : currentValue; }
|
|
bool isDefault() const { return is_default; }
|
|
bool isExplicit() const { return is_explicit; }
|
|
|
|
private:
|
|
T currentValue;
|
|
T defaultValue;
|
|
bool is_default = true;
|
|
bool is_explicit = false;
|
|
};
|