Boost provides free peer-reviewed portable C++ source libraries.
We emphasize libraries that work
源代码在线查看: dummy_arg_disambiguation.cpp
// Boost enable_if library // Copyright 2003 (c) The Trustees of Indiana University. // Use, modification, and distribution is subject to 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) // Authors: Jaakko Jarvi (jajarvi at osl.iu.edu) // Jeremiah Willcock (jewillco at osl.iu.edu) // Andrew Lumsdaine (lums at osl.iu.edu) #include #include #include using boost::enable_if; using boost::disable_if; using boost::is_arithmetic; template struct dummy { dummy(int) {}; }; template typename enable_if::type arithmetic_object(T t, dummy = 0) { return true; } template typename disable_if::type arithmetic_object(T t, dummy = 0) { return false; } int test_main(int, char*[]) { BOOST_CHECK(arithmetic_object(1)); BOOST_CHECK(arithmetic_object(1.0)); BOOST_CHECK(!arithmetic_object("1")); BOOST_CHECK(!arithmetic_object(static_cast(0))); return 0; }