有没有一种方法可以防止编译器将constexpr函数放入目标文件中?

时间:2020-09-11 21:44:33

标签: c++

我有一个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);
}

0 个答案:

没有答案