blob: a4d967b9634003fb1f55e6c6615cff22619e5950 [file] [log] [blame]
// { dg-do compile { target c++26 } }
#include <type_traits>
#include <iostream>
#include <testsuite_hooks.h>
constexpr auto
initial_phase(auto quantity_1, auto quantity_2)
{ return quantity_1 + quantity_2; }
constexpr auto
middle_phase(auto tbd)
{ return tbd; }
constexpr void
final_phase(auto gathered, auto available)
{
if constexpr (gathered == available)
std::cout << "Profit!\n";
}
void
impeccable_underground_planning()
{
auto gathered_quantity = middle_phase(initial_phase(std::cw<42>, std::cw<13>));
static_assert(gathered_quantity == 55);
auto all_available = std::cw<55>;
final_phase(gathered_quantity, all_available);
}
void
deeply_flawed_underground_planning()
{
constexpr auto gathered_quantity = middle_phase(initial_phase(42, 13));
constexpr auto all_available = 55;
final_phase(gathered_quantity, all_available); // { dg-error "required from here" }
}
// { dg-prune-output "'gathered' is not a constant expression" }