Jedną z możliwości poprawnego użycia if constexpr jest użycie szablonu funkcji write_text, w którym parametrem będzie draw_opt. Poniżej uproszczony kod:
#include <iostream>
enum class draw_opt {
wrap = 0,
cut = 1
};
template< draw_opt opt = draw_opt::wrap >
void write_text( std::string_view text )
{
std::cout << "Main body of function : " << text << std::endl;
if constexpr( opt == draw_opt::wrap )
{
std::cout << "draw_opt::wrap == opt" << std::endl;
}
}
int main()
{
write_text("Call 1");
std::cout << std::endl;
write_text<draw_opt::cut>("Call 2");
return 0;
}
Warto także dodać, że wszystkie zmienne zdefiniowane wewnątrz if constexpr są niewidoczne na zewnątrz. Stąd też zmienna end nie będzie widoczna w momencie wywołania std::copy_n i w efekcie dostaniemy błąd kompilacji.