関数を次のように書くことは可能ですか:
void func(uint64_t val) {template <typename T>
void call_with(std::function<void(T)> f, T val) { f(val); }
int main() { auto print = [](int x) { std::cout << x; }; call_with(印刷、42); }}
警告uint64_t
を変更せずに、以外の整数型で呼び出された場合、コンパイル時エラーが生成される場所は?#pragma
すなわち:
uint32_t x = 0;
func(x) {…} // Error!
func(uint64_t(x)) {…} // Succes!