Namespaces
Variants
Actions

std::variant_npos

From cppreference.com
< cpp‎ | utility‎ | variant
 
 
Utilities library
General utilities
Relational operators (deprecated in C++20)
(C++20)(C++20)(C++20)  
(C++20)
(C++20)
(C++14)
(C++11)
(C++11)
(C++23)
(C++11)
(C++17)
Common vocabulary types
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)


 
 
Defined in header <variant>
inline constexpr std::size_t variant_npos = -1;
(since C++17)

This is a special value equal to the largest value representable by the type std::size_t , used as the return value of index() when valueless_by_exception() is true.

Run this code
#include <iostream>
#include <stdexcept>
#include <string>
#include <variant>
 
struct Demon
{
 Demon(int) {}
 Demon(const Demon&) { throw std::domain_error ("copy ctor"); }
 Demon& operator= (const Demon&) = default;
};
 
int main()
{
 std::variant <int, Demon> var{42};
 std::cout
 << std::boolalpha
 << "index == npos: " << (var.index() == std::variant_npos) << '\n';
 
 try { var = Demon{666}; } catch (const std::domain_error & ex)
 {
 std::cout
 << "Exception: " << ex.what() << '\n'
 << "index == npos: " << (var.index() == std::variant_npos) << '\n'
 << "valueless: " << var.valueless_by_exception() << '\n';
 }
}

Possible output:

index == npos: false
Exception: copy ctor
index == npos: true
valueless: true

[edit] See also

returns the zero-based index of the alternative held by the variant
(public member function) [edit]
checks if the variant is in the invalid state
(public member function) [edit]
Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/variant/variant_npos&oldid=172846"

AltStyle によって変換されたページ (->オリジナル) /