I tried to compile this simple program with clang 3.8.0 on Windows 10 (using MSVC 2017 headers):
#include <iostream>
#include "mapbox/variant.hpp"
int main() {
using namespace std;
using myvar = mapbox::util::variant<int, double>;
myvar m;
cout << "ok" << endl;
return 0;
}
But I've got the following errors:
C:\Tests\Cpp\variant>clang++ -std=c++14 -Ivariant/include main.cc
In file included from main.cc:2:
variant/include\mapbox/variant.hpp:599:44: error: no template named 'is_nothrow_default_constructible' in namespace
'std'; did you mean 'has_nothrow_default_constructor'?
VARIANT_INLINE variant() noexcept(std::is_nothrow_default_constructible<first_type>::value)
~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
has_nothrow_default_constructor
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\type_traits:1021:12: note:
'has_nothrow_default_constructor' declared here
using tr1::has_nothrow_default_constructor;
^
In file included from main.cc:2:
variant/include\mapbox/variant.hpp:612:51: error: no template named 'is_nothrow_constructible' in namespace 'std'; did
you mean 'has_nothrow_constructor'?
VARIANT_INLINE variant(T&& val) noexcept(std::is_nothrow_constructible<typename Traits::target_type, T&&>::value)
~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
has_nothrow_constructor
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\type_traits:1018:12: note: 'has_nothrow_constructor'
declared here
using tr1::has_nothrow_constructor; // retained
^
In file included from main.cc:2:
variant/include\mapbox/variant.hpp:612:51: error: too many template arguments for class template
'has_nothrow_constructor'
VARIANT_INLINE variant(T&& val) noexcept(std::is_nothrow_constructible<typename Traits::target_type, T&&>::value)
^ ~~~~
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\type_traits:720:9: note: template is declared here
struct has_nothrow_constructor _HAS_NOTHROW_CONSTRUCTOR(_Ty)
^
In file included from main.cc:2:
variant/include\mapbox/variant.hpp:625:43: error: no template named 'is_nothrow_move_constructible' in namespace 'std';
did you mean 'has_nothrow_copy_constructor'?
noexcept(detail::conjunction<std::is_nothrow_move_constructible<Types>...>::value)
~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
has_nothrow_copy_constructor
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\type_traits:1020:12: note:
'has_nothrow_copy_constructor' declared here
using tr1::has_nothrow_copy_constructor;
^
In file included from main.cc:2:
variant/include\mapbox/variant.hpp:583:19: error: static_assert expression is not an integral constant expression
static_assert(sizeof...(Types) < std::numeric_limits<type_index_t>::max(), "Internal index type must be abl...
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
main.cc:8:9: note: in instantiation of template class 'mapbox::util::variant<int, double>' requested here
myvar m;
^
variant/include\mapbox/variant.hpp:583:38: note: non-constexpr function 'max' cannot be used in a constant expression
static_assert(sizeof...(Types) < std::numeric_limits<type_index_t>::max(), "Internal index type must be abl...
^
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\limits:777:24: note: declared here
static _Ty (__CRTDECL max)() _THROW0()
^
5 errors generated.
I tried to compile this simple program with clang 3.8.0 on Windows 10 (using MSVC 2017 headers):
But I've got the following errors:
Don't know if I'm doing something wrong...