a2.cpp:34:12: error: no matching function for call to 'is_constexpr_impl' return is_constexpr_impl(0); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ a2.cpp:60:18: note: in instantiation of function template specialization 'is_constexpr' requested here std::cout << is_constexpr(1, 1) << std::endl; ^ a2.cpp:14:16: note: candidate template ignored: substitution failure [with F = int (int, int), FP = f, Args = ]: non-type template argument is not a constant expression constexpr bool is_constexpr_impl(bool&&) ^ a2.cpp:34:12: error: no matching function for call to 'is_constexpr_impl' return is_constexpr_impl(0); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ a2.cpp:61:18: note: in instantiation of function template specialization 'is_constexpr' requested here std::cout << is_constexpr(1.0f, 1.0f) << std::endl; ^ a2.cpp:14:16: note: candidate template ignored: substitution failure [with F = float (float, float), FP = g, Args = ]: non-type template argument is not a constant expression constexpr bool is_constexpr_impl(bool&&) ^ a2.cpp:34:12: error: no matching function for call to 'is_constexpr_impl' return is_constexpr_impl(0); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ a2.cpp:62:18: note: in instantiation of function template specialization 'is_constexpr' requested here std::cout << is_constexpr(1, 1) << std::endl; ^ a2.cpp:14:16: note: candidate template ignored: substitution failure [with F = int (int, int), FP = h, Args = ]: non-type template argument is not a constant expression constexpr bool is_constexpr_impl(bool&&) ^ a2.cpp:34:12: error: no matching function for call to 'is_constexpr_impl' return is_constexpr_impl(0); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ a2.cpp:63:18: note: in instantiation of function template specialization 'is_constexpr' requested here std::cout << is_constexpr(1.0f, 1.0f) << std::endl; ^ a2.cpp:14:16: note: candidate template ignored: substitution failure [with F = float (float, float), FP = i, Args = ]: non-type template argument is not a constant expression constexpr bool is_constexpr_impl(bool&&) ^ 4 errors generated.