This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <cstdint> | |
#include <limits> | |
int main(int argc, char **argv) { | |
std::int32_t i = std::numeric_limits<int32_t>::max(); | |
i++; // signed overflow | |
if (i < 0) { | |
std::cerr << "i<0 and i=" << i << "\n"; // "expected" or "safe" result (-O1) | |
} else { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <string> | |
#include <iostream> | |
#include <sstream> | |
#define BOOST_SPIRIT_USE_PHOENIX_V3 | |
#include <boost/spirit/include/qi.hpp> | |
#include <boost/spirit/include/phoenix.hpp> | |
int main() { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <string> | |
#include <boost/spirit/include/lex_lexertl.hpp> | |
#include <boost/spirit/include/lex_lexertl_position_token.hpp> | |
#include <boost/spirit/include/support_istream_iterator.hpp> | |
#include <boost/spirit/include/qi.hpp> | |
#include <boost/spirit/include/phoenix.hpp> | |
#include <boost/algorithm/string/case_conv.hpp> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// test transforming a mutating function into a value-returning function via Phoenix | |
// i.e., void f(T& a) -> T f(T const& a) or T F(T a) | |
#define BOOST_SPIRIT_USE_PHOENIX_V3 | |
#include <iostream> | |
#include <string> | |
#include <boost/spirit/include/phoenix.hpp> | |
#include <boost/algorithm/string/case_conv.hpp> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <vector> | |
#include <Eigen/Dense> | |
#include <Eigen/Sparse> | |
int main() { | |
using namespace std; | |
using namespace Eigen; | |
vector<Triplet<double> > tripletList; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <typeinfo> | |
#include <string> | |
#include <iostream> | |
template<typename T> struct A { | |
template<typename U> | |
A(U u) { | |
std::cout << std::string("class template parameter generic, ctor template parameter ") + typeid(u).name() << std::endl; | |
} | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <typeinfo> | |
#include <string> | |
#include <iostream> | |
template<typename T> struct A { | |
template<typename U> | |
void foo(U u) { | |
std::cout << std::string("class template parameter generic, function template parameter ") + typeid(u).name() << std::endl; | |
} | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <type_traits> | |
#include <iostream> | |
using namespace std; | |
template< class... > struct voider { using type = void; }; | |
template< class... T0toN > using void_t = typename voider<T0toN...>::type; | |
// does NOT work |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <type_traits> | |
#include <iostream> | |
using namespace std; | |
template<class... > using void_t = void; | |
template< class, class = void > | |
struct has_type_member : false_type { }; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Copyright 2010-2012 Karsten Ahnert | |
Copyright 2011-2013 Mario Mulansky | |
Copyright 2013 Pascal Germroth | |
Distributed under the Boost Software License, Version 1.0. | |
(See accompanying file LICENSE_1_0.txt or | |
copy at http://www.boost.org/LICENSE_1_0.txt) | |
*/ |