Merge branch 'master' into develop
This commit is contained in:
commit
ec47a35e9f
@ -1,5 +1,11 @@
|
|||||||
cmake_minimum_required(VERSION 2.8)
|
cmake_minimum_required(VERSION 2.8)
|
||||||
|
|
||||||
|
IF(BIICODE)
|
||||||
|
INIT_BIICODE_BLOCK()
|
||||||
|
ADD_BIICODE_TARGETS()
|
||||||
|
ELSE()
|
||||||
|
# Your regular CMakeLists configuration here
|
||||||
|
|
||||||
project(chaiscript)
|
project(chaiscript)
|
||||||
|
|
||||||
# MINGW does not yet support C++11's concurrency features
|
# MINGW does not yet support C++11's concurrency features
|
||||||
@ -409,3 +415,6 @@ configure_file(contrib/pkgconfig/chaiscript.pc.in lib/pkgconfig/chaiscript.pc @O
|
|||||||
install(FILES "${chaiscript_BINARY_DIR}/lib/pkgconfig/chaiscript.pc"
|
install(FILES "${chaiscript_BINARY_DIR}/lib/pkgconfig/chaiscript.pc"
|
||||||
DESTINATION lib/pkgconfig)
|
DESTINATION lib/pkgconfig)
|
||||||
|
|
||||||
|
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
5
biicode.conf
Normal file
5
biicode.conf
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[paths]
|
||||||
|
include
|
||||||
|
|
||||||
|
[parent]
|
||||||
|
ChaiScript/ChaiScript: 0
|
@ -1,103 +1,103 @@
|
|||||||
# Checks for C++11 features
|
# Checks for C++11 features
|
||||||
# CXX11_FEATURE_LIST - a list containing all supported features
|
# CXX11_FEATURE_LIST - a list containing all supported features
|
||||||
# HAS_CXX11_AUTO - auto keyword
|
# HAS_CXX11_AUTO - auto keyword
|
||||||
# HAS_CXX11_NULLPTR - nullptr
|
# HAS_CXX11_NULLPTR - nullptr
|
||||||
# HAS_CXX11_LAMBDA - lambdas
|
# HAS_CXX11_LAMBDA - lambdas
|
||||||
# HAS_CXX11_STATIC_ASSERT - static_assert()
|
# HAS_CXX11_STATIC_ASSERT - static_assert()
|
||||||
# HAS_CXX11_RVALUE_REFERENCES - rvalue references
|
# HAS_CXX11_RVALUE_REFERENCES - rvalue references
|
||||||
# HAS_CXX11_DECLTYPE - decltype keyword
|
# HAS_CXX11_DECLTYPE - decltype keyword
|
||||||
# HAS_CXX11_CSTDINT_H - cstdint header
|
# HAS_CXX11_CSTDINT_H - cstdint header
|
||||||
# HAS_CXX11_LONG_LONG - long long signed & unsigned types
|
# HAS_CXX11_LONG_LONG - long long signed & unsigned types
|
||||||
# HAS_CXX11_VARIADIC_TEMPLATES - variadic templates
|
# HAS_CXX11_VARIADIC_TEMPLATES - variadic templates
|
||||||
# HAS_CXX11_CONSTEXPR - constexpr keyword
|
# HAS_CXX11_CONSTEXPR - constexpr keyword
|
||||||
# HAS_CXX11_SIZEOF_MEMBER - sizeof() non-static members
|
# HAS_CXX11_SIZEOF_MEMBER - sizeof() non-static members
|
||||||
# HAS_CXX11_FUNC - __func__ preprocessor constant
|
# HAS_CXX11_FUNC - __func__ preprocessor constant
|
||||||
#
|
#
|
||||||
# Original script by Rolf Eike Beer
|
# Original script by Rolf Eike Beer
|
||||||
# Modifications by Andreas Weis
|
# Modifications by Andreas Weis
|
||||||
#
|
#
|
||||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.3)
|
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.3)
|
||||||
|
|
||||||
SET(CHECK_CXX11_OLD_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
SET(CHECK_CXX11_OLD_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
||||||
IF(CMAKE_COMPILER_IS_GNUCXX)
|
IF(CMAKE_COMPILER_IS_GNUCXX)
|
||||||
SET(CMAKE_CXX_FLAGS "-std=c++0x")
|
SET(CMAKE_CXX_FLAGS "-std=c++0x")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
MACRO(CXX11_CHECK_FEATURE FEATURE_NAME FEATURE_NUMBER RESULT_VAR)
|
MACRO(CXX11_CHECK_FEATURE FEATURE_NAME FEATURE_NUMBER RESULT_VAR)
|
||||||
IF (NOT DEFINED ${RESULT_VAR})
|
IF (NOT DEFINED ${RESULT_VAR})
|
||||||
SET(_bindir "${CMAKE_CURRENT_BINARY_DIR}/cxx11/cxx11_${FEATURE_NAME}")
|
SET(_bindir "${CMAKE_CURRENT_BINARY_DIR}/cxx11/cxx11_${FEATURE_NAME}")
|
||||||
|
|
||||||
IF (${FEATURE_NUMBER})
|
IF (${FEATURE_NUMBER})
|
||||||
SET(_SRCFILE_BASE ${CMAKE_CURRENT_LIST_DIR}/c++11-test-${FEATURE_NAME}-N${FEATURE_NUMBER})
|
SET(_SRCFILE_BASE ${CMAKE_CURRENT_LIST_DIR}/c++11-test-${FEATURE_NAME}-N${FEATURE_NUMBER})
|
||||||
SET(_LOG_NAME "\"${FEATURE_NAME}\" (N${FEATURE_NUMBER})")
|
SET(_LOG_NAME "\"${FEATURE_NAME}\" (N${FEATURE_NUMBER})")
|
||||||
ELSE (${FEATURE_NUMBER})
|
ELSE (${FEATURE_NUMBER})
|
||||||
SET(_SRCFILE_BASE ${CMAKE_CURRENT_LIST_DIR}/c++11-test-${FEATURE_NAME})
|
SET(_SRCFILE_BASE ${CMAKE_CURRENT_LIST_DIR}/c++11-test-${FEATURE_NAME})
|
||||||
SET(_LOG_NAME "\"${FEATURE_NAME}\"")
|
SET(_LOG_NAME "\"${FEATURE_NAME}\"")
|
||||||
ENDIF (${FEATURE_NUMBER})
|
ENDIF (${FEATURE_NUMBER})
|
||||||
MESSAGE(STATUS "Checking C++11 support for ${_LOG_NAME}")
|
MESSAGE(STATUS "Checking C++11 support for ${_LOG_NAME}")
|
||||||
|
|
||||||
SET(_SRCFILE "${_SRCFILE_BASE}.cpp")
|
SET(_SRCFILE "${_SRCFILE_BASE}.cpp")
|
||||||
SET(_SRCFILE_FAIL "${_SRCFILE_BASE}_fail.cpp")
|
SET(_SRCFILE_FAIL "${_SRCFILE_BASE}_fail.cpp")
|
||||||
SET(_SRCFILE_FAIL_COMPILE "${_SRCFILE_BASE}_fail_compile.cpp")
|
SET(_SRCFILE_FAIL_COMPILE "${_SRCFILE_BASE}_fail_compile.cpp")
|
||||||
|
|
||||||
IF (CROSS_COMPILING)
|
IF (CROSS_COMPILING)
|
||||||
try_compile(${RESULT_VAR} "${_bindir}" "${_SRCFILE}")
|
try_compile(${RESULT_VAR} "${_bindir}" "${_SRCFILE}")
|
||||||
IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
|
IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
|
||||||
try_compile(${RESULT_VAR} "${_bindir}_fail" "${_SRCFILE_FAIL}")
|
try_compile(${RESULT_VAR} "${_bindir}_fail" "${_SRCFILE_FAIL}")
|
||||||
ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
|
ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
|
||||||
ELSE (CROSS_COMPILING)
|
ELSE (CROSS_COMPILING)
|
||||||
try_run(_RUN_RESULT_VAR _COMPILE_RESULT_VAR
|
try_run(_RUN_RESULT_VAR _COMPILE_RESULT_VAR
|
||||||
"${_bindir}" "${_SRCFILE}")
|
"${_bindir}" "${_SRCFILE}")
|
||||||
IF (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
|
IF (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
|
||||||
SET(${RESULT_VAR} TRUE)
|
SET(${RESULT_VAR} TRUE)
|
||||||
ELSE (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
|
ELSE (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
|
||||||
SET(${RESULT_VAR} FALSE)
|
SET(${RESULT_VAR} FALSE)
|
||||||
ENDIF (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
|
ENDIF (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
|
||||||
IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
|
IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
|
||||||
try_run(_RUN_RESULT_VAR _COMPILE_RESULT_VAR
|
try_run(_RUN_RESULT_VAR _COMPILE_RESULT_VAR
|
||||||
"${_bindir}_fail" "${_SRCFILE_FAIL}")
|
"${_bindir}_fail" "${_SRCFILE_FAIL}")
|
||||||
IF (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
|
IF (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
|
||||||
SET(${RESULT_VAR} TRUE)
|
SET(${RESULT_VAR} TRUE)
|
||||||
ELSE (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
|
ELSE (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
|
||||||
SET(${RESULT_VAR} FALSE)
|
SET(${RESULT_VAR} FALSE)
|
||||||
ENDIF (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
|
ENDIF (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
|
||||||
ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
|
ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
|
||||||
ENDIF (CROSS_COMPILING)
|
ENDIF (CROSS_COMPILING)
|
||||||
IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL_COMPILE})
|
IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL_COMPILE})
|
||||||
try_compile(_TMP_RESULT "${_bindir}_fail_compile" "${_SRCFILE_FAIL_COMPILE}")
|
try_compile(_TMP_RESULT "${_bindir}_fail_compile" "${_SRCFILE_FAIL_COMPILE}")
|
||||||
IF (_TMP_RESULT)
|
IF (_TMP_RESULT)
|
||||||
SET(${RESULT_VAR} FALSE)
|
SET(${RESULT_VAR} FALSE)
|
||||||
ELSE (_TMP_RESULT)
|
ELSE (_TMP_RESULT)
|
||||||
SET(${RESULT_VAR} TRUE)
|
SET(${RESULT_VAR} TRUE)
|
||||||
ENDIF (_TMP_RESULT)
|
ENDIF (_TMP_RESULT)
|
||||||
ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL_COMPILE})
|
ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL_COMPILE})
|
||||||
|
|
||||||
IF (${RESULT_VAR})
|
IF (${RESULT_VAR})
|
||||||
MESSAGE(STATUS "Checking C++11 support for ${_LOG_NAME} -- works")
|
MESSAGE(STATUS "Checking C++11 support for ${_LOG_NAME} -- works")
|
||||||
LIST(APPEND CXX11_FEATURE_LIST ${RESULT_VAR})
|
LIST(APPEND CXX11_FEATURE_LIST ${RESULT_VAR})
|
||||||
ELSE (${RESULT_VAR})
|
ELSE (${RESULT_VAR})
|
||||||
MESSAGE(STATUS "Checking C++11 support for ${_LOG_NAME} -- not supported")
|
MESSAGE(STATUS "Checking C++11 support for ${_LOG_NAME} -- not supported")
|
||||||
ENDIF (${RESULT_VAR})
|
ENDIF (${RESULT_VAR})
|
||||||
SET(${RESULT_VAR} ${${RESULT_VAR}} CACHE INTERNAL "C++11 support for ${_LOG_NAME}")
|
SET(${RESULT_VAR} ${${RESULT_VAR}} CACHE INTERNAL "C++11 support for ${_LOG_NAME}")
|
||||||
ENDIF (NOT DEFINED ${RESULT_VAR})
|
ENDIF (NOT DEFINED ${RESULT_VAR})
|
||||||
ENDMACRO(CXX11_CHECK_FEATURE)
|
ENDMACRO(CXX11_CHECK_FEATURE)
|
||||||
|
|
||||||
CXX11_CHECK_FEATURE("auto" 2546 HAS_CXX11_AUTO)
|
CXX11_CHECK_FEATURE("auto" 2546 HAS_CXX11_AUTO)
|
||||||
CXX11_CHECK_FEATURE("nullptr" 2431 HAS_CXX11_NULLPTR)
|
CXX11_CHECK_FEATURE("nullptr" 2431 HAS_CXX11_NULLPTR)
|
||||||
CXX11_CHECK_FEATURE("lambda" 2927 HAS_CXX11_LAMBDA)
|
CXX11_CHECK_FEATURE("lambda" 2927 HAS_CXX11_LAMBDA)
|
||||||
CXX11_CHECK_FEATURE("static_assert" 1720 HAS_CXX11_STATIC_ASSERT)
|
CXX11_CHECK_FEATURE("static_assert" 1720 HAS_CXX11_STATIC_ASSERT)
|
||||||
CXX11_CHECK_FEATURE("rvalue_references" 2118 HAS_CXX11_RVALUE_REFERENCES)
|
CXX11_CHECK_FEATURE("rvalue_references" 2118 HAS_CXX11_RVALUE_REFERENCES)
|
||||||
CXX11_CHECK_FEATURE("decltype" 2343 HAS_CXX11_DECLTYPE)
|
CXX11_CHECK_FEATURE("decltype" 2343 HAS_CXX11_DECLTYPE)
|
||||||
CXX11_CHECK_FEATURE("cstdint" "" HAS_CXX11_CSTDINT_H)
|
CXX11_CHECK_FEATURE("cstdint" "" HAS_CXX11_CSTDINT_H)
|
||||||
CXX11_CHECK_FEATURE("long_long" 1811 HAS_CXX11_LONG_LONG)
|
CXX11_CHECK_FEATURE("long_long" 1811 HAS_CXX11_LONG_LONG)
|
||||||
CXX11_CHECK_FEATURE("variadic_templates" 2555 HAS_CXX11_VARIADIC_TEMPLATES)
|
CXX11_CHECK_FEATURE("variadic_templates" 2555 HAS_CXX11_VARIADIC_TEMPLATES)
|
||||||
CXX11_CHECK_FEATURE("constexpr" 2235 HAS_CXX11_CONSTEXPR)
|
CXX11_CHECK_FEATURE("constexpr" 2235 HAS_CXX11_CONSTEXPR)
|
||||||
CXX11_CHECK_FEATURE("sizeof_member" 2253 HAS_CXX11_SIZEOF_MEMBER)
|
CXX11_CHECK_FEATURE("sizeof_member" 2253 HAS_CXX11_SIZEOF_MEMBER)
|
||||||
CXX11_CHECK_FEATURE("__func__" 2340 HAS_CXX11_FUNC)
|
CXX11_CHECK_FEATURE("__func__" 2340 HAS_CXX11_FUNC)
|
||||||
|
|
||||||
SET(CXX11_FEATURE_LIST ${CXX11_FEATURE_LIST} CACHE STRING "C++11 feature support list")
|
SET(CXX11_FEATURE_LIST ${CXX11_FEATURE_LIST} CACHE STRING "C++11 feature support list")
|
||||||
MARK_AS_ADVANCED(FORCE CXX11_FEATURE_LIST)
|
MARK_AS_ADVANCED(FORCE CXX11_FEATURE_LIST)
|
||||||
|
|
||||||
SET(CMAKE_CXX_FLAGS ${CHECK_CXX11_OLD_CMAKE_CXX_FLAGS})
|
SET(CMAKE_CXX_FLAGS ${CHECK_CXX11_OLD_CMAKE_CXX_FLAGS})
|
||||||
UNSET(CHECK_CXX11_OLD_CMAKE_CXX_FLAGS)
|
UNSET(CHECK_CXX11_OLD_CMAKE_CXX_FLAGS)
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
if (!__func__) { return 1; }
|
if (!__func__) { return 1; }
|
||||||
if(std::strlen(__func__) <= 0) { return 1; }
|
if(std::strlen(__func__) <= 0) { return 1; }
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
auto i = 5;
|
auto i = 5;
|
||||||
auto f = 3.14159f;
|
auto f = 3.14159f;
|
||||||
auto d = 3.14159;
|
auto d = 3.14159;
|
||||||
bool ret = (
|
bool ret = (
|
||||||
(sizeof(f) < sizeof(d)) &&
|
(sizeof(f) < sizeof(d)) &&
|
||||||
(sizeof(i) == sizeof(int))
|
(sizeof(i) == sizeof(int))
|
||||||
);
|
);
|
||||||
return ret ? 0 : 1;
|
return ret ? 0 : 1;
|
||||||
}
|
}
|
||||||
|
@ -1,19 +1,19 @@
|
|||||||
constexpr int square(int x)
|
constexpr int square(int x)
|
||||||
{
|
{
|
||||||
return x*x;
|
return x*x;
|
||||||
}
|
}
|
||||||
|
|
||||||
constexpr int the_answer()
|
constexpr int the_answer()
|
||||||
{
|
{
|
||||||
return 42;
|
return 42;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
int test_arr[square(3)];
|
int test_arr[square(3)];
|
||||||
bool ret = (
|
bool ret = (
|
||||||
(square(the_answer()) == 1764) &&
|
(square(the_answer()) == 1764) &&
|
||||||
(sizeof(test_arr)/sizeof(test_arr[0]) == 9)
|
(sizeof(test_arr)/sizeof(test_arr[0]) == 9)
|
||||||
);
|
);
|
||||||
return ret ? 0 : 1;
|
return ret ? 0 : 1;
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
bool test =
|
bool test =
|
||||||
(sizeof(int8_t) == 1) &&
|
(sizeof(int8_t) == 1) &&
|
||||||
(sizeof(int16_t) == 2) &&
|
(sizeof(int16_t) == 2) &&
|
||||||
(sizeof(int32_t) == 4) &&
|
(sizeof(int32_t) == 4) &&
|
||||||
(sizeof(int64_t) == 8);
|
(sizeof(int64_t) == 8);
|
||||||
return test ? 0 : 1;
|
return test ? 0 : 1;
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
|
|
||||||
bool check_size(int i)
|
bool check_size(int i)
|
||||||
{
|
{
|
||||||
return sizeof(int) == sizeof(decltype(i));
|
return sizeof(int) == sizeof(decltype(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
bool ret = check_size(42);
|
bool ret = check_size(42);
|
||||||
return ret ? 0 : 1;
|
return ret ? 0 : 1;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
return ([&ret]() -> int { return ret; })();
|
return ([&ret]() -> int { return ret; })();
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
long long l;
|
long long l;
|
||||||
unsigned long long ul;
|
unsigned long long ul;
|
||||||
|
|
||||||
return ((sizeof(l) >= 8) && (sizeof(ul) >= 8)) ? 0 : 1;
|
return ((sizeof(l) >= 8) && (sizeof(ul) >= 8)) ? 0 : 1;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
int* test = nullptr;
|
int* test = nullptr;
|
||||||
return test ? 1 : 0;
|
return test ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
int i = nullptr;
|
int i = nullptr;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
int foo(int& lvalue)
|
int foo(int& lvalue)
|
||||||
{
|
{
|
||||||
return 123;
|
return 123;
|
||||||
}
|
}
|
||||||
|
|
||||||
int foo(int&& rvalue)
|
int foo(int&& rvalue)
|
||||||
{
|
{
|
||||||
return 321;
|
return 321;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
int i = 42;
|
int i = 42;
|
||||||
return ((foo(i) == 123) && (foo(42) == 321)) ? 0 : 1;
|
return ((foo(i) == 123) && (foo(42) == 321)) ? 0 : 1;
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
struct foo {
|
struct foo {
|
||||||
char bar;
|
char bar;
|
||||||
int baz;
|
int baz;
|
||||||
};
|
};
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
bool ret = (
|
bool ret = (
|
||||||
(sizeof(foo::bar) == 1) &&
|
(sizeof(foo::bar) == 1) &&
|
||||||
(sizeof(foo::baz) >= sizeof(foo::bar)) &&
|
(sizeof(foo::baz) >= sizeof(foo::bar)) &&
|
||||||
(sizeof(foo) >= sizeof(foo::bar)+sizeof(foo::baz))
|
(sizeof(foo) >= sizeof(foo::bar)+sizeof(foo::baz))
|
||||||
);
|
);
|
||||||
return ret ? 0 : 1;
|
return ret ? 0 : 1;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
static_assert(0 < 1, "your ordering of integers is screwed");
|
static_assert(0 < 1, "your ordering of integers is screwed");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
static_assert(1 < 0, "this should fail");
|
static_assert(1 < 0, "this should fail");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,23 +1,23 @@
|
|||||||
int Accumulate()
|
int Accumulate()
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T, typename... Ts>
|
template<typename T, typename... Ts>
|
||||||
int Accumulate(T v, Ts... vs)
|
int Accumulate(T v, Ts... vs)
|
||||||
{
|
{
|
||||||
return v + Accumulate(vs...);
|
return v + Accumulate(vs...);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<int... Is>
|
template<int... Is>
|
||||||
int CountElements()
|
int CountElements()
|
||||||
{
|
{
|
||||||
return sizeof...(Is);
|
return sizeof...(Is);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
int acc = Accumulate(1, 2, 3, 4, -5);
|
int acc = Accumulate(1, 2, 3, 4, -5);
|
||||||
int count = CountElements<1,2,3,4,5>();
|
int count = CountElements<1,2,3,4,5>();
|
||||||
return ((acc == 5) && (count == 5)) ? 0 : 1;
|
return ((acc == 5) && (count == 5)) ? 0 : 1;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user