我有一个constexpr函数,不想在二进制文件中显示。只有结果应该在其中,在编译时进行计算。这可能吗?
编辑:
当我查看这段代码的输出并发现二进制文件的大小没有改变时,我是否在main中设置了变量constexpr
,问题就来了。使用mingw g++ -std=c++17 -O2
#include <iostream>
#include <tuple>
template <std::size_t I>
constexpr auto fizzbuzz_elem()
{
if constexpr (I % 5 == 0 && I % 3 == 0) {
return "FizzBuzz";
} else if constexpr (I % 5 == 0) {
return "Buzz";
} else if constexpr (I % 3 == 0){
return "Fizz";
} else {
return I;
}
}
template <std::size_t...Is>
constexpr auto fizzbuzz_impl(std::index_sequence<Is...>){
return std::make_tuple(fizzbuzz_elem<1 + Is>()...);
}
template <std::size_t N>
constexpr auto fizzbuzz(){
return fizzbuzz_impl(std::make_index_sequence<N>());
}
int main() {
auto res = fizzbuzz<42>();
std::apply([](auto... e){ ((std::cout << e << std::endl), ...); }, res);
}