Request Short Link
C++ 98
C++ 11
C++ 14
C++ 17
C++ 20
C++ 23
C++ 2c
for-loops as while-loops
array subscription
Show all implicit casts
Show all template parameters of a CallExpr
Use libc++
Transform std::initializer_list
Show noexcept internals
Show padding information
Show coroutine transformation
Show C++ to C transformation
Show object lifetime
Default
15
18
20
22
26
More
GitHub
Patreon
Issues
About
Policies
Examples
C++ Insights @ YouTube
Settings
Version
Special: C++ Self-study w. Coaching
×
Made by
Andreas Fertig
Powered by
Flask
and
CodeMirror
Source:
#include <iostream> #include <functional> struct Foo { void operator()() { std::cout << "Foo@" << __func__ << ":" << __LINE__ << std::endl; } }; struct Bar { using fun_t = void(*)(); static void invoke() { std::cout << "Bar@" << __func__ << ":" << __LINE__ << std::endl; } operator fun_t() { return invoke; } }; struct FooBar { using fun_t = void(*)(); static void invoke() { std::cout << "FooBar@" << __func__ << ":" << __LINE__ << std::endl; } operator fun_t() { return invoke; } void operator()() { std::cout << "FooBar@" << __func__ << ":" << __LINE__ << std::endl; } void operator()(int) { std::cout << "FooBar@" << __func__ << ":" << __LINE__ << std::endl; } }; int main(int argc, char **argv) { using fun_t = void(*)(); Foo foo; foo(); Bar bar; bar(); FooBar fb; fb(); fun_t f = fb; f(); std::function<void()> func_c = f; f(); std::function<void()> func = fb; func(); std::function<void(int)> func_int = fb; func_int(0); return 0; }
Insight:
Console: