История изменений
Исправление rumgot, (текущая версия) :
ox55ff
Или так для C++11 / C++14 :
#include <iostream>
#include <type_traits>
// int foo(int a, int b) { return 1; }
int foo(int a, int b, bool c) { return 0; }
template <int (*f)(int, int, bool)>
static auto setupTempl(int a, int b) -> decltype(f(a, b, true)) {
return f(a, b, true);
}
template <int (*f)(int, int)>
static auto setupTempl(int a, int b) -> decltype(f(a, b)) {
return f(a, b);
}
int main() {
setupTempl<foo>(1, 2);
return 0;
}
Исправление rumgot, :
ox55ff
Или так для C++14 :
#include <iostream>
#include <type_traits>
//int foo(int a, int b) { return 1; }
int foo(int a, int b, bool c) { return 0; }
template <int (*f)(int, int, bool)>
static auto setupTempl(int a, int b) -> decltype(f(a, b, true)) {
return f(a, b, true);
}
template <int (*f)(int, int)>
static auto setupTempl(int a, int b) -> decltype(f(a, b)) {
return f(a, b);
}
int main() {
setupTempl<foo>(1, 2);
return 0;
}
Исходная версия rumgot, :
ox55ff
Или так для C++14 :
#include <iostream>
#include <type_traits>
// int foo(int a, int b)
// {
// return 1;
// }
int foo(int a, int b, bool c) { return 0; }
template <int (*f)(int, int, bool)>
static auto setupTempl(int a, int b) -> decltype(f(a, b, true)) {
return f(a, b, true);
}
template <int (*f)(int, int)>
static auto setupTempl(int a, int b) -> decltype(f(a, b)) {
return f(a, b);
}
int main() {
setupTempl<foo>(1, 2);
return 0;
}