config/test/boost_no_unified_init.ipp
2014-06-01 09:22:27 -07:00

60 lines
1.3 KiB
C++

// Copyright (C) 2011 John Maddock
// Use, modification and distribution are 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)
// See http://www.boost.org/libs/config for most recent version.
// MACRO: BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
// TITLE: C++0x unified initialization syntax unavailable
// DESCRIPTION: The compiler does not support C++0x unified initialization syntax: see http://en.wikipedia.org/wiki/C%2B%2B0x#Uniform_initialization
#include <string>
namespace boost_no_cxx11_unified_initialization_syntax {
struct BasicStruct
{
int x;
double y;
};
struct AltStruct
{
public:
AltStruct(int x, double y) : x_{x}, y_{y} {}
int X() const { return x_; }
double Y() const { return y_; }
private:
int x_;
double y_;
};
struct IdString
{
std::string name;
int identifier;
bool operator == (const IdString& other)
{
return identifier == other.identifier && name == other.name;
}
};
IdString get_string()
{
return {"SomeName", 4}; //Note the lack of explicit type.
}
int test()
{
BasicStruct var1{5, 3.2};
AltStruct var2{2, 4.3};
(void) var1;
(void) var2;
IdString id{"SomeName", 4};
return id == get_string() ? 0 : 1;
}
}