/*=============================================================================
A Standard compliant C++ preprocessor
Copyright (c) 2001-2004 Hartmut Kaiser
http://spirit.sourceforge.net/
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)
See Copyright.txt for full acknowledgements.
=============================================================================*/
// Tests the correctness of parameter replacement, if the parameter is
// adjacent to an operator '##'.
#define CONCAT(a, b) PRIMITIVE_CONCAT(a, b)
#define PRIMITIVE_CONCAT(a, b) a ## b
CONCAT(1, PRIMITIVE_CONCAT(2, 3))
//E #line 21 "test_files/test4.cpp"
//E 123
CONCAT(1, CONCAT(2, 3))
//E 123
PRIMITIVE_CONCAT(1, CONCAT(2, 3))
//L (26): error: pasting the following two tokens does not give a valid preprocessing token: "1" and "CONCAT"
//R 1