# Copyright 2017 Rene Rivera
# 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)

import feature ;

# The `cxxstd` feature specifies the version of the C++ Standard Language to
# build with. All the official versions of the standard since "98" are
# included: `98`, `03`, `11`, `14`, and `17`. It is also possible to
# specify using the experimental, work in progress, `latest` version. Some
# compilers specified intermediate versions for the experimental versions
# leading up to the released standard version. Those are included following
# the GNU nomenclature as `0x`, `1y`, `1z`, and `2a`. And depending on the
# compiler `latest` would map to one of those.
#
# NOTE: This is an `optional` feature. Hence when not specified the compiler
# default behaviour is used.
# 
# NOTE: Please consult the toolset specific documentation for which `cxxstd`
# is supported.

feature.feature cxxstd
    : 98 03 0x 11 1y 14 1z 17 2a latest
    : optional composite propagated ;

# The cxxstd:dialet subfeature indicates if a non-standard dialect should be
# used. These usually have either/or extensions or platform specific
# functionality. Not specifying the dialect will default to 'iso'. Which will
# attempt to use ISO C++ Standard conformance to the best of the compiler's
# ability.

feature.subfeature cxxstd : dialect
    : iso gnu ms
    : composite propagated ;
