Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Each additional instantiation of 'foo' in 'example.cpp' adds ~3 seconds of compile time. Each additional instantiation in 'example-outlined.cpp', on the other hand, adds an additional 0.01 seconds.
This file has been truncated, but you can view the full file.
#include <string>
#include <iostream>
void bar_prologue_outlined() {
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
}
void bar_epilogue_outlined() {
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
}
template <typename RetTy, typename ParamTy> RetTy bar(ParamTy x) {
bar_prologue_outlined();
std::cout << x << std::endl;
bar_epilogue_outlined();
return x + 10;
}
void foo_prologue_outlined() {
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}("6");
}(3, 4.f, 5.0) << std::endl;
std::cout << bar<int, int>(1) << std::endl;
std::cout << bar<int, float>(1) << std::endl;
std::cout << bar<float, int>(1) << std::endl;
std::cout << bar<int, double>(1) << std::endl;
std::cout << bar<double, int>(1) << std::endl;
std::cout << [](int a, float b) -> int {
return a * 10 + b * 5;
}(1, 2.f) << std::endl;
std::cout << [](int a, float b, double c) -> auto {
return [a, b, c](const std::string &d) -> int {
std::cout << d << std::endl;
return a * 2 + std::stoi(d) * 4 + b + c;
}(