Question: This is my HTML:

```
<html>
<head>
<script>
function ppid() {
    var ppidtxt = document.getElementById('ppid').value;
    var newppidtxt = ppidtxt.toUpperCase();
    var ppide = document.getElementById('ppid');
    ppide.value = newppidtxt;
}
</script>
</head>
<body>
<form>
  <center><input type="text" id="ppid" class="form-control" name="ppid" placeholder="Personal Project ID" onchange="ppid();" /></center>
</form>
</body>
</html>

```

I've tried this is JSFiddle, on my local PC, pretty much everywhere but for some reason, whenever I type something in the form's text box with the id "ppid" it isn't capitalizing it. What have I done wrong?

Answer: 
`assert` works now that g++ has implemented [N3652, Relaxing constraints on constexpr functions](http://isocpp.org/files/papers/N3652.html). [This status page](https://gcc.gnu.org/projects/cxx1y.html) indicates that this has been implemented in gcc5.

`assert` also works (in constexpr functions) on the current clang compiler shipped by Apple, with `-std=c++1y`.

At this time, I see nothing in the standard that assures one that `assert` will work in constexpr functions, and such an assurance would be a welcome addition to the standard (at least by me).

**Update**

Richard Smith drew my attention to [LWG 2234](http://cplusplus.github.io/LWG/lwg-active.html#2234) submitted by Daniel Krügler which is attempting to create the assurance I refer to above.
This has been incorporated into C++17.
Throwing an exception might be useful as the compiler will ignore the run-time part when it knows at compile-time that the exception is not thrown.

```
#include <cassert>

constexpr int getClamped(int mValue, int mMin, int mMax)
{
    return ( mMin <= mMax ) ? 
           ( mValue < mMin ? mMin : (mValue > mMax ? mMax : mValue) ) :
           throw "mMin must be less than or equal to mMax";
}

int main( int argc, char** argv )
{
    // These two work:
    static_assert( getClamped( 42, 0, 100 ) == 42, "CT" );
    assert( getClamped( argc, 0, 100 ) == argc );

    // Fails at compile-time:
    // static_assert( getClamped( 42, 100, 0 ) == 42, "CT" );

    // Fails at run-time:
    // assert( getClamped( argc, 100, 0 ) == argc );
}

```

[**Live example**](http://coliru.stacked-crooked.com/a/c8b138ace60f7bd1)