c++标准库 配套网站: http://www.cppstdlib.com/
例子: http://www.cppstdlib.com/code/toc.html
第三章-新的语言特性
lambda
#include<functional>
#include<iostream>
//** 函数返回lambda函数 */
std::function<int(int,int)> returnLambda ()
{
return [] (int x, int y) {
return x*y;
};
}
int main()
{
auto lf = returnLambda();//* 用auto去接lambda函数 */
std::cout << lf(6,7) << std::endl; //** 42 */
}
function<int(int,int)>
表示一个函数:返回值是int ,有两个参数,类型都是int
只是说明lambda函数的用法,实际不会写这样的函数.
CH04-通用的概念
#include <exception>
#include <system_error>
#include <future>
#include <iostream>
template <typename T>
void processCodeException (const T& e)
{
using namespace std;
auto c = e.code();
cerr << "- category: " << c.category().name() << endl;
cerr << "- value: " << c.value() << endl;
cerr << "- msg: " << c.message() << endl;
cerr << "- def category: "
<< c.default_error_condition().category().name() << endl;
cerr << "- def value: "
<< c.default_error_condition().value() << endl;
cerr << "- def msg: "
<< c.default_error_condition().message() << endl;
}
void processException()
{
using namespace std;
try {
throw; // rethrow exception to deal with it here
}
catch (const ios_base::failure& e) {
cerr << "I/O EXCEPTION: " << e.what() << endl;
processCodeException(e);
}
catch (const system_error& e) {
cerr << "SYSTEM EXCEPTION: " << e.what() << endl;
processCodeException(e);
}
catch (const future_error& e) {
cerr << "FUTURE EXCEPTION: " << e.what() << endl;
processCodeException(e);
}
catch (const bad_alloc& e) {
cerr << "BAD ALLOC EXCEPTION: " << e.what() << endl;
}
catch (const exception& e) {
cerr << "EXCEPTION: " << e.what() << endl;
}
catch (...) {
cerr << "EXCEPTION (unknown)" << endl;
}
}